TextOut a antyaliasing

0

Używając funkcji TextOut na Canvasie formularza otrzymuję tekst.

Form1->Canvas->TextOut(0,0,"sample text");

Niestety jest on "poszarpany", czcionka nie ma wygładzonych krawędzi.
Jak można otrzymać wygładzony tekst?

Chcę skopiować canvas formularza do canvasa drukarki, żeby można to wydrukować, ale
taka niewygładzona czcionka brzydko wygląda.

Używając
Printer()->Canvas->TextOut(0,0,"sample tekst");
czcionka wygląda ok.

Nie chcę jednak rysować bezpośrednio po canvasie drukarki, ponieważ w przypadku różnych drukarek
teksty i tabele mogą się rozjeżdżać.

Czy da radę zrobić to na canvasach? Jeżeli nie, to jaki jest inny sposób?
Szukałem na forum ale nie mogłem znaleźć nic podobnego.

Z góry dziękuję.

0

w WinAPI (a VCL borlanda to nic innego jak nakładka na WinAPI), więc zasady będą takie same...

antialiasing rysowanego tekstu zależy od czcionki, a konkretniej od parametru fdwQuality (http://msdn.microsoft.com/en-us/library/dd183499.aspx) w CreateFont, szukaj ustawień czcionki i jej jakości w tych borlandowych klasach czcionki, może coś takiego będzie

0

Tego właśnie szukałem!

Cała sztuka polegała na stworzeniu logicznej czcionki.
Wykorzystując podany w linku przykład uzyskałem ładnie wygładzony tekst na canvasie formularza.

AnsiString a;

a = "Hello World";

hdc = Form1->Canvas->Handle;

hFont = CreateFont(72,0,0,0,FW_DONTCARE,FALSE,TRUE,FALSE,DEFAULT_CHARSET,OUT_OUTLINE_PRECIS,
                CLIP_DEFAULT_PRECIS,CLEARTYPE_QUALITY, VARIABLE_PITCH,TEXT("Times New Roman"));
SelectObject(hdc, hFont);



Form1->Canvas->TextOutA(10,10,a);

DeleteObject(hFont);

Jeszcze raz wielkie dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1