Пользовательский стиль тире в QPen выглядит грязно
Мне нужно нарисовать пунктирные линии в Qt с QPen
и я хочу установить собственный шаблон тире с помощью QPen:: setDashPattern ():
QPen pen;
pen.setColor(Qt::black);
QVector<qreal> dashes;
dashes << 1.0 << 8.0;
pen.setDashPattern(dashes);
pen.setCapStyle(Qt::RoundCap);
pen.setWidthF(1.02);
painter->setPen(pen);
...
Я получаю шаблон, который мне нужен, но линия выглядит "грязной": некоторые штрихи, кажется, имеют немного больший вес, чем другие:
Только если я не использую setWidthF() или использую его с setWidthF(1.0), строки выглядят чистыми и ровными. Но если я немного увеличу ширину, линии испортятся. Можно ли получить чистые и ровные линии с произвольной чертой и произвольной шириной?
2 ответа
Решение найдено. Это все о сглаживании.
С помощью:
painter->setRenderHint(QPainter::Antialiasing)
решает проблему.
В QT doc
это говорит следующее: The pattern must be specified as an even number of positive entries where the entries 1, 3, 5... are the dashes and 2, 4, 6... are the spaces
, Может быть, поэтому линии не ровны. Вот ссылка на QPen class description
в Qt doc
Qt Doc.