我有一个 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
上绘制文字,那么效果很好。
但是,我需要在其上绘制TRichEdit
的文本,因此我正在使用EM_FORMATRANGE
来实现此目的。但是文本是用我的Windows抗锯齿来绘制的(所以如果我在Windows中启用ClearType,它就是ClearType,即使我用ANTIALIASED_QUALITY
设置旧的抗锯齿)。
我想我需要更改TRichEdit
的字体质量,所以我将程序应用到它:SetFontQuality(MyRichEdit.Font, ANTIALIASED_QUALITY)
,但这并没有改变。
我做了一些测试 - 我尝试将该过程应用于各种控件的Font
属性 - TButton
,TMemo
,TEdit
,{{1} }。它就像一个魅力所有。但是,当应用于TLabel
的{{1}}属性时,抗锯齿功能不会发生变化。
所以,我的问题是:如何更改TRichEdit控件的抗锯齿质量?
答案 0 :(得分:2)
Delphi TRichEdit
控件是本机Windows丰富编辑控件的松散包装器。 Windows丰富的编辑控件基于RTF标准。富编辑控件的内容可以针对文本的不同部分具有不同的字体属性。但是,RTF标准不包括抗锯齿。因此,您无法将抗锯齿设置应用于文本的各个部分。因此,控件使用系统设置来确定抗锯齿。