Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Pritcher от Март 31, 2015, 17:15



Название: [РЕШЕНО] Графические артефакты при рисовании на QImage
Отправлено: Pritcher от Март 31, 2015, 17:15
Привет!
Рисую на Qimage линию с размером пера >= 2 и получаю следующую картину:
(http://cs624916.vk.me/v624916180/2a577/1bFS9uGL-e0.jpg)

вот код, с помощью которого происходит рисование:
Код:
QPainter painter( getImage() );
painter.setPen( QPen( getLeftColor(),
7,
Qt::SolidLine,
Qt::SquareCap,
Qt::MiterJoin )
);
if ( _startPoint == _endPoint )
painter.drawPoint( _endPoint );
else
painter.drawLine( _startPoint, _endPoint );
painter.end();

_startPoint и _endPoint - объекты класса QPointF
Рисование начинается по нажатию мыши.

Отчего могут появляться выступы площадью в 1 пиксель?


Название: Re: Графические артефакты при рисовании на QImage
Отправлено: gil9red от Март 31, 2015, 17:24
Поиграйтесь с QPainter::setRenderHint (http://doc.qt.io/qt-4.8/qpainter.html#setRenderHint)


Название: Re: Графические артефакты при рисовании на QImage
Отправлено: Pritcher от Март 31, 2015, 17:42
Поиграйтесь с QPainter::setRenderHint (http://doc.qt.io/qt-4.8/qpainter.html#setRenderHint)

Никаких изменений.

В целом, я хотел добиться "рисования квадратом". Т.е. линии в таком случае должны быть заданной толщины, но без таких вот "отростков", что представлены на пикче.
Полагаю, что эти артефакты вылезают из-за стилей пера , в данном случае Qt::SquareCap и Qt::MiterJoin, и вылезают они по вине троллей и общей реализации.

Хотелось найти что-то в документации для достижения желаемого результата, но похоже придется изобретать велосипед...