我有理由需要一個德爾福的形式與大字體的標籤,並注意到 其曲線仍然有點鋸齒狀。我比較了這與相同的尺寸 和MSWord中的字體非常平滑。經過研究,我發現代碼 ,允許我平滑我的字體,但它很混亂,我想知道是否有更好的方法 ?展望在VCL源,TFont似乎執着於 NONANTIALIASED_QUALITY這是相當令人沮喪,...字體平滑在德爾福
由於業務收益指數
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 2009-05-28 14:58:24
你認爲這段代碼的哪一部分是凌亂的? – 2009-05-28 21:52:57
當VCL已經完成這件事時,我必須在每個標籤上戳出每一個字體,這似乎很浪費。我尋找我可以重寫或繼承的東西,但沒有運氣。我想這是實現我想要的唯一途徑。 Bri – 2009-08-11 15:25:46