Witam,
Sprawa jest taka: mam do zaimplementowania podglad wydruku i wydruk. Na wydruku musze miec pewien tekst o orientacji pionowej. Napisalem taka funkcje do wyswietlania pionowego tekstu:
void AngleTextOut(String sText, int x, int y)
{
TLogFont *LogFont = new TLogFont();
TFont *SaveFont = new TFont();
c->Font->Size = 8*(zoom/100.0);
SaveFont->Assign(c->Font);
GetObject(SaveFont->Handle, sizeof(TLogFont), LogFont);
LogFont->lfEscapement = 900;
LogFont->lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
c->Font->Handle = CreateFontIndirect(LogFont);
SetBkMode(c->Handle, TRANSPARENT);
c->TextOut(x*jedn_x, y*jedn_y, sText);
c->Font->Assign(SaveFont);
delete SaveFont;
}
Problem z tym, ze jezeli wyswietlam tekst na Canvasie podgladu jest ok - ale jezeli wrzuce to na Canvas drukarki (wtedy zoom=100), to juz nie dziala - wtedy rozmiar czcionki jest zalezny od DPI drukarki i dla duzych DPI czcionka ma tak maly rozmiar, ze jej nie widac.
Pytanie: dlaczego tak sie dzieje i w czym problem? Jak mam obliczac rozmiar czcionki?
Jezeli wyswietlam tekst normalnie poziomo za pomoca standardowego TextOut, rozmiary czcionek sa zawsze zachowane i nie ma takiego problemu.