Пользовательский стиль тире в 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.

Другие вопросы по тегам