Мне нужно нарисовать пунктирные линии в 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), строки выглядят чистыми и ровными. Но если я немного увеличу ширину, линии испортятся. Можно ли получить чистые и ровные линии с произвольной чертой и произвольной шириной?
в 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.
Решение найдено. Это все о сглаживании.
С помощью:
painter->setRenderHint(QPainter::Antialiasing)
решает проблему.