Как изменить качество сглаживания шрифтов (сглаживания) RichEdit в 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. Это прекрасно работает, если я использую DrawText нарисовать текст на TBitmap, Тем не менее, мне нужно нарисовать текст TRichEdit на нем, поэтому я использую EM_FORMATRANGE для этого. Но текст рисуется с любым моим сглаживанием Windows (поэтому, если я включаю ClearType в Windows, это ClearType, даже если я установил старый сглаживание с помощью ANTIALIASED_QUALITY).

Я полагаю, мне нужно изменить качество шрифта TRichEditпоэтому я применил процедуру к нему: SetFontQuality(MyRichEdit.Font, ANTIALIASED_QUALITY), но это ничего не изменило.

Я провел небольшое тестирование - попытался применить процедуру к Font свойство различных элементов управления - TButton, TMemo, TEdit, TLabel, Это работает как шарм на всех из них. Но применительно к TRichEdit"s Font свойство, сглаживание не меняется.

Итак, мой вопрос: как изменить качество сглаживания элемента управления TRichEdit?

1 ответ

Дельфи TRichEdit control - свободная оболочка для родного элемента управления редактирования Windows. Элемент управления расширенным редактированием Windows основан на стандарте RTF. Содержимое элемента управления расширенным редактированием может иметь разные свойства шрифта для разных частей текста. Однако стандарт RTF не распространяется на сглаживание. Таким образом, вы не можете применить настройку сглаживания к отдельным частям текста. Поэтому элемент управления использует настройки системы для определения сглаживания.

Другие вопросы по тегам