Tôi đã có nguyên nhân cần một nhãn có phông chữ lớn trên biểu mẫu Delphi và nhận thấy rằng các đường cong của nó vẫn hơi bị lởm chởm. Tôi so sánh điều này với cùng kích thước và phông chữ trong MSWord mượt mà hơn nhiều. Sau khi nghiên cứu tôi tìm thấy mã số cho phép tôi làm trơn các phông chữ của mình nhưng nó lộn xộn và tôi đã tự hỏi liệu có cách nào tốt hơn không? Nhìn trong nguồn VCL, TFont dường như gắn bó với NONANTIALIASED_QUALITY đó là thay vì bực bội ...Làm mịn phông chữ ở Delphi
Cảm ơn 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;
Vì vậy, mã này có hoạt động (và bạn chỉ muốn làm sạch nó và tìm một số cách dễ dàng) hoặc nó vẫn không đủ mượt hoặc không hoạt động? – schnaader
Phần nào của mã này bạn cho là lộn xộn? –
Có vẻ như lãng phí mà tôi đã phải chọc mỗi phông chữ trên mỗi nhãn khi VCL đã làm điều này. Tôi đã tìm kiếm thứ gì đó mà tôi có thể ghi đè hoặc phân lớp nhưng không có may mắn. Tôi đoán đây là cách duy nhất để đạt được những gì tôi muốn. Bri –