1

我有一个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. 它对所有人都有效。但是当应用于 aTRichEditFont属性时,抗锯齿不会改变。

所以,我的问题是:如何更改 TRichEdit 控件的抗锯齿质量?

4

1 回答 1

2

DelphiTRichEdit控件是对本机 Windows 富编辑控件的松散包装。Windows 富编辑控件基于 RTF 标准。Rich Edit 控件的内容对于文本的不同部分可以具有不同的字体属性。然而,RTF 标准不包括抗锯齿。因此,您不能将抗锯齿设置应用于文本的各个部分。因此,控件使用系统设置来确定抗锯齿。

于 2014-03-18T17:11:52.250 回答