Я использую QPainter :: setRenderHint (QPainter :: Antialiasing, true)
, чтобы сообщить Qt, что я хочу, чтобы он сглаживал любой рисунок, который я делаю (в в данном случае текст нарисован с помощью drawText ()
).
Это работает нормально, и текст выглядит хорошо, пока я не хочу повернуть растровое изображение, на которое рисую, например
Painter.translate(0, height());
Painter.rotate(-90);
(чтобы повернуть QPainter на 90 градусов против часовой стрелки и вернуть его в поле зрения)
Вызов rotate ()
, кажется, отключает сглаживание для любого нарисованного текста - текст рисуется с правильным поворотом но без антиалиасинга. Другие вещи кажутся незатронутыми - например, drawLine ()
по-прежнему рисует хорошо сглаженную линию.
Есть идеи, что я делаю не так?
РЕДАКТИРОВАТЬ: Неудивительно, что добавление текста к пути и последующее заполнение этого пути дает мне сглаженный, повернутый текст. Однако я бы предпочел избегать этого маршрута, если это возможно.
РЕДАКТИРОВАТЬ (снова): Я пробовал использовать QFont :: setStyleStrategy (QFont :: PreferAntialias)
для шрифта, который я использую, но безрезультатно. Тем не менее, еще несколько экспериментов показывают, что базовый шрифт, такой как Arial, по-прежнему будет воспроизводить сглаженный текст при повороте, в то время как мой пользовательский шрифт (Swiss721 BlkCn BT для всех, кому интересно) - нет. Более того, хотя эта проблема существует в Windows 7, у меня нет такой проблемы при работе в Ubuntu. В этой статье часто задаваемых вопросов можно предположить, что Qt обращается к ОС хоста для обработки сглаживания шрифтов, поэтому какие проблемы могут возникнуть в Windows при обработке рендеринга этого конкретного шрифта (который является TrueType, как и Arial )?
РЕДАКТИРОВАТЬ (в прошлый раз, обещаю): увеличение размера шрифта до 16 пунктов или выше решает проблему.Казалось бы, проблема заключается в отображении моего конкретного шрифта ниже 16 пунктов - возможно, что-то связано с тем, что было упомянуто в вышеупомянутой статье блога?:
В Windows 2000 шрифты обычно не сглаживаются в определенном диапазоне (скажем, размер 8- 16), чтобы текст был более четким и читаемым.