Как изменить качество сглаживания шрифтов (сглаживания) 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 не распространяется на сглаживание. Таким образом, вы не можете применить настройку сглаживания к отдельным частям текста. Поэтому элемент управления использует настройки системы для определения сглаживания.