Я использую 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. Эта статья FAQ , по-видимому, предполагает, что Qt обращается к хост-операционной системе для обработки сглаживания шрифтов, поэтому, какие проблемы могут возникнуть у Windows при обработке рендеринга этого конкретного шрифта (который является TrueType, так же, как Arial) )
РЕДАКТИРОВАТЬ (в прошлый раз, я обещаю): Увеличение размера шрифта до 16pt или выше убивает проблему. Казалось бы, проблема в том, что мой конкретный шрифт ниже 16pt, возможно, что-то связанное с тем, что было упомянуто в статье блога выше:
В Windows 2000 шрифты обычно не сглаживаются в определенном диапазоне (скажем, размеры 8-16), чтобы сделать текст более четким и читабельным.