我有一个Delphi 7应用程序,我在其中将文本绘制到TBitmap
. 我需要能够控制文本的抗锯齿质量。为此,我使用以下过程:
procedure SetFontQuality(Font: TFont; Quality: Byte);
var
lf: TLogFont;
begin
GetObject(Font.Handle, SizeOf(TLogFont), @lf);
lf.lfQuality := Quality;
Font.Handle := CreateFontIndirect(lf);
end;
我TBitmap
这样称呼它:SetFontQuality(MyBitmap.Canvas.Font, ANTIALIASED_QUALITY)
。这里的目标是设置旧的抗锯齿而不是新的 ClearType。这很好用,如果我DrawText
用来在TBitmap
. 但是,我需要在其上绘制 a 的文本TRichEdit
,所以我正在使用EM_FORMATRANGE
它。但是无论我的 Windows 抗锯齿是什么来绘制文本(所以如果我在 Windows 中启用 ClearType,它就是 ClearType,即使我用 设置了旧的抗锯齿ANTIALIASED_QUALITY
)。
我想我需要更改 的字体质量TRichEdit
,所以我将程序应用于它:SetFontQuality(MyRichEdit.Font, ANTIALIASED_QUALITY)
,但这并没有改变。
我做了一些测试 - 我尝试将过程应用于Font
各种控件的属性 - TButton
, TMemo
, TEdit
, TLabel
. 它对所有人都有效。但是当应用于 aTRichEdit
的Font
属性时,抗锯齿不会改变。
所以,我的问题是:如何更改 TRichEdit 控件的抗锯齿质量?