У меня возникла необходимость в ярлыке с большим шрифтом в форме Delphi и заметил, что его кривые все еще слегка зазубрены. Я сравнивал это с тем же размером и шрифтом в MSWord, который был намного более плавным. После исследования я нашел код , который позволил мне сгладить мои шрифты, но это грязно, и мне было интересно, был ли лучший способ? Глядя в источнике VCL, TFont кажется преданными NONANTIALIASED_QUALITY что довольно неприятно ...Сглаживание шрифтов в Delphi
Благодарности 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;
Так работает ли этот код (и вы просто хотите его очистить и найти какой-то простой способ), или он все еще не достаточно гладко или не работает? – schnaader
Какую часть этого кода вы считаете грязной? –
Кажется расточительным, что я должен выталкивать каждый шрифт на каждом ярлыке, когда VCL уже это сделал. Я искал что-то, что мог бы переопределить или подкласс, но не повезло. Я думаю, это единственный способ добиться того, чего я хочу. Bri –