// вертикальный шрифт
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);
Размер вертикального шрифта при печати
(прямоугольники + текст + вертикальный текст).
Параметры вертикального текста задаю при инициализации приложения (было бы правильнее если в функции рисования, но создаётся запредельно много GDI) так:
Код:
При рисовании на 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));
}
{
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));
}
Но при рисовании на канве принтера шрифт другого размера.
Мне понятно почему, а как исправить не знаю.
Буду очень признателен за помощь.
Вместо прежней инициализации шрифта использовать
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);