QPainter :: rotate отключает сглаживание нарисованного текста

Я использую 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), чтобы текст был более четким и читаемым.

8
задан sam-w 3 November 2011 в 14:05
поделиться