Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Размер вертикального шрифта при печати

32K
21 марта 2008 года
fillVictor
4 / / 20.11.2007
Есть функция рисования RedrawPan(TCanvas *Canvas,int dY,int a)
(прямоугольники + текст + вертикальный текст).
Параметры вертикального текста задаю при инициализации приложения (было бы правильнее если в функции рисования, но создаётся запредельно много GDI) так:
Код:
// вертикальный шрифт
ZeroMemory(&VerticalFont,sizeof(VerticalFont));
VerticalFont.lfHeight = 12;
VerticalFont.lfEscapement = 900;
VerticalFont.lfOrientation = 900;
VerticalFont.lfWeight = FW_NORMAL;

ZeroMemory(&GorizontalFont,sizeof(GorizontalFont));
GorizontalFont.lfHeight = 12;
GorizontalFont.lfWeight = FW_NORMAL;

SelectObject(Image1->Canvas->Handle,CreateFontIndirect(&VerticalFont));

VertFont = (TFont*)SelectObject(Image1->Canvas->Handle,CreateFontIndirect(&GorizontalFont));

GorFont = (TFont*)SelectObject(Image1->Canvas->Handle,VertFont);

При рисовании на Image1 всё ok.
 
Код:
if(Result[t][5]>Result[t][6])
                         {
                                 SelectObject(Canvas->Handle,GorFont);
                                 Canvas->TextOut(Result[t][1]/a + 2,Result[t][2]/a + 2 + dY,IntToStr(Result[t][5]/100)+" x "+IntToStr(Result[t][6]/100));
                         }
                         else
                         {
                                 SelectObject(Canvas->Handle,VertFont);
                                 Canvas->TextOut(Result[t][1]/a + 2,Result[t][4]/a - 2 + dY,IntToStr(Result[t][5]/100)+" x "+IntToStr(Result[t][6]/100));
                         }


Но при рисовании на канве принтера шрифт другого размера.
Мне понятно почему, а как исправить не знаю.

Буду очень признателен за помощь.
32K
21 марта 2008 года
fillVictor
4 / / 20.11.2007
Нашёл решение.
Вместо прежней инициализации шрифта использовать

GorFont = (TFont*)CreateFont(-12,0,0,0,FW_NORMAL,false,false,false,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,NULL);
VertFont = (TFont*)CreateFont(-12,0,900,900,FW_NORMAL,false,false,false,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,NULL);

А при печати

GorFont = (TFont*)CreateFont(-MulDiv(7, GetDeviceCaps(Prntr->Handle, LOGPIXELSY), 72),0,0,0,FW_NORMAL,false,false,false,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,NULL);
VertFont = (TFont*)CreateFont(-MulDiv(7, GetDeviceCaps(Prntr->Handle, LOGPIXELSY),72),0,900,900,FW_NORMAL,false,false,false,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,NULL);

И в конце печати

GorFont = (TFont*)CreateFont(-12,0,0,0,FW_NORMAL,false,false,false,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,NULL);
VertFont = (TFont*)CreateFont(-12,0,900,900,FW_NORMAL,false,false,false,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,NULL);
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог