我有一个Delphi7应用程序,在该应用程序中,我将文本绘制到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反混叠所绘制的(所以如果我在ClearType中启用了ClearType,即使我用ANTIALIASED_QUALITY设置了旧的反混叠)。
我想我需要更改TRichEdit的字体质量,所以我将这个过程应用于它:SetFontQuality(MyRichEdit.Font, ANTIALIASED_QUALITY),但这并没有改变任何事情。
我做了一些测试--我尝试将这个过程应用于各种控件的Font属性-- TButton、TMemo、TEdit、TLabel。这对所有的人来说都是一种魅力。但是当应用于TRichEdit的Font属性时,反混叠不会改变。
因此,我的问题是:如何改变TRichEdit控件的抗混叠质量?
发布于 2014-03-18 17:11:52
Delphi控件是本机TRichEdit富编辑控件的松散包装器。Windows富编辑控件基于RTF标准。富编辑控件的内容可以针对文本的不同部分具有不同的字体属性。然而,RTF标准并不包括反混叠.因此,不能将反混叠设置应用于文本的各个部分。因此,该控件使用系统设置来确定反混叠.
https://stackoverflow.com/questions/22485970
复制相似问题