qt で画像を描画するには、qpainter が使用されることがわかっています。最近、私は drawLine() 関数を使用して、ユーザーが落書きしているものを何でも描画しました。これは、lastPoint と currentPoint を mouseMoveEvent から drawLine() を実装するカスタム関数に渡すことによって行われました。以下に示すように、そのカスタム関数の引数を渡しました。
void myPaint::mouseMoveEvent(QMouseEvent *event) {
qDebug() << event->pos();
if ((event->buttons() & Qt::LeftButton) && scribbling) {
pixelList.append(event->pos());
drawLineTo(event->pos());
lastPoint = event->pos();
}
}
qDebug() の助けを借りて、描画中に一部のピクセルが欠落していることに気付きましたが、描画は正確です。qt-painting のソースを調べたところ、drawLine() が drawLines() を呼び出していて、qpainterPath を使用して画像に図形を描画していたことがわかりました。
私の質問は、これらの「見逃された」ピクセルを追跡する方法や、描画されたすべてのピクセルを見つける方法はありますか?
ありがとう!
void myPaint::drawLineTo(const QPoint &endPoint) {
QPainter painter(image); //image is initialized in the constructor of myPaint
painter.setRenderHint(QPainter::Antialiasing);
painter.setPen(QPen(Qt::blue, myPenWidth, Qt::SolidLine, Qt::RoundCap,Qt::RoundJoin));
painter.drawLine(lastPoint, endPoint);
modified = true;
lastPoint = endPoint; //at the mousePressEvent, the event->pos() will be stored as
// lastPoint
update();
}