Avevo bisogno di un'etichetta con un font grande su un modulo Delphi e ho notato che le sue curve erano ancora leggermente seghettate. Ho confrontato questo con la stessa dimensione e il carattere in MSWord che era molto più agevole. Dopo la ricerca ho trovato il codice che mi ha permesso di smussare i miei caratteri ma è disordinato e mi chiedevo se ci fosse un modo migliore? Guardando nella sorgente VCL, TFont sembra sposata a NONANTIALIASED_QUALITY che è piuttosto frustrante ...Font smoothing in Delphi
Grazie Bri
procedure TForm1.SetFontSmoothing(AFont: TFont);
var
tagLOGFONT: TLogFont;
begin
GetObject(
AFont.Handle,
SizeOf(TLogFont),
@tagLOGFONT);
tagLOGFONT.lfQuality := ANTIALIASED_QUALITY;
AFont.Handle := CreateFontIndirect(tagLOGFONT);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
I : integer;
begin
For I :=0 to ComponentCount-1 do
If Components[I] is TLabel then
SetFontSmoothing(TLabel(Components[I]).Font);
end;
Quindi questo codice funziona (e vuoi solo pulirlo e trovare un modo semplice) o non è ancora abbastanza fluido o non funziona? – schnaader
Quale parte di questo codice consideri disordinata? –
Sembra inutile che io debba colpire ogni carattere su ogni etichetta quando il VCL lo ha già fatto. Ho cercato qualcosa che potessi escludere o sottoclasse, ma senza fortuna. Immagino che questo sia l'unico modo per ottenere ciò che voglio. Bri –