Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Alp от Август 25, 2009, 20:58



Название: Text antialiasing
Отправлено: Alp от Август 25, 2009, 20:58
Почему-то после установки painter.setRenderHint(QPainter::TextAntialiasing, 1);
надписи получаются точно такие же, как и без вызова антиалиасинга.
Код
C++ (Qt)
QPainter painter(this);
 
painter.setRenderHint(QPainter::Antialiasing, 1);
painter.setRenderHint(QPainter::SmoothPixmapTransform, 1);
DrawBorderAndBackground( &painter);
 
//Если я прав, то после выполнения этой строчки всё должно стать хорошо
//Однако этого не происходит
painter.setRenderHint(QPainter::TextAntialiasing, 1);
QLabel::paintEvent(event);
 


Название: Re: Text antialiasing
Отправлено: ритт от Август 25, 2009, 21:10
lol

где связь между описанием проблемы и приложенным кодом?


Название: Re: Text antialiasing
Отправлено: Rcus от Август 25, 2009, 21:15
А разве при создании QPainter TextAntialiasing не задан по-умолчанию? У меня сейчас документации пока нет (ST 320G bites the dust), но помню что когда тестировал этот хинт всегда был.


Название: Re: Text antialiasing
Отправлено: Alp от Август 25, 2009, 21:20
lol

где связь между описанием проблемы и приложенным кодом?
Связь в том, что  QLabel::paintEvent(event) отрисует текст за меня. Разве это не очевидно?


Название: Re: Text antialiasing
Отправлено: Alp от Август 25, 2009, 21:20
А разве при создании QPainter TextAntialiasing не задан по-умолчанию? У меня сейчас документации пока нет (ST 320G bites the dust), но помню что когда тестировал этот хинт всегда был.
Возможно и задан, но от чего так страшно выглядит текст на лейбле?


Название: Re: Text antialiasing
Отправлено: ритт от Август 25, 2009, 21:23
lol

где связь между описанием проблемы и приложенным кодом?
Связь в том, что  QLabel::paintEvent(event) отрисует текст за меня. Разве это не очевидно?
загляни в QLabel::paintEvent(event) - и поймёшь (или не поймёшь)...


Название: Re: Text antialiasing
Отправлено: Rcus от Август 25, 2009, 21:28
Кстати а разве в таком случае в консоль не должны сыпаться предупреждения о множественных пейнтерах на одном девайсе?


Название: Re: Text antialiasing
Отправлено: zenden от Август 26, 2009, 01:00
Код
C++ (Qt)
QFont font;
  font.setFamily(...);
font.setStyleStrategy(QFont::PreferAntialias);  // <----
painter.setFont(font);
 

Кстати, кто знает как сделать нормальный антиалисинг?
Интересует под виндой. Если в винде включен ClearType, всё нормально.
Если же нет, сглаживание в QPainter калечит шрифты.


Название: Re: Text antialiasing
Отправлено: Alp от Август 26, 2009, 01:05
Спасибо, это то, что надо было. Никогда бы не додумался, что дело в QFont'е.