У меня есть приложение Win32 GUI, которое использует GDI. Необходимо нарисовать текст поверх растрового изображения в указанных координатах, а затем стереть его и заменить исходным растровым изображением.
Я действую следующим образом:
- выберите шрифт (GetStockObject (DEFAULT_GUI_FONT)), кисти, другие элементы в контексте устройства
- вызовите GetTextExtentPoint32 (), чтобы вычислить размер текста
- теперь, имея начальную точку текста, я могу вычислить ожидаемый текстовый прямоугольник и сохранить его
- вызов TextOut () для того же контекста устройства с той же начальной точкой и тем же текстом
и позже восстановить растровое изображение для прямоугольника магазина.
Отлично работает, когда сглаживание ClearType выключено. Но с ClearType размер, возвращаемый GetTextExtentPoint32 (), немного меньше размера, фактически занятого текстом при вызове TextOut (). Поэтому при последующем восстановлении исходного растрового изображения остаются небольшие полоски текста, и у меня появляются артефакты.
Есть ли какое-нибудь лекарство от этого без отключения ClearType?