如何在Delphi中改变字体平滑(抗锯齿)的质量



我有一个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。如果我使用DrawTextTBitmap上绘制文本,这个效果很好。然而,我需要在上面绘制TRichEdit的文本,所以我使用EM_FORMATRANGE用于此目的。但是文本是用我的Windows抗锯齿绘制的(所以如果我在Windows中启用ClearType,它就是ClearType,即使我用ANTIALIASED_QUALITY设置旧的抗锯齿)。

我想我需要改变TRichEdit的字体质量,所以我对它应用了这个过程:SetFontQuality(MyRichEdit.Font, ANTIALIASED_QUALITY),但这并没有改变什么。

我做了一点测试-我尝试将程序应用于各种控件的Font属性- TButton, TMemo, TEdit, TLabel。对他们所有人都有魔力。但是当应用于TRichEditFont属性时,抗混叠不会改变。

所以,我的问题是:我如何改变TRichEdit控件的抗混叠质量?

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

相关内容

  • 没有找到相关文章

最新更新