0
我对如何实现某种图形编辑器有一个小问题。 对于绘图我使用这种方法: 首先我检查是否鼠标左键单击,然后我在我的QPixmap上event-> pos()绘制一个像素,然后我调用update();重新绘制它。如果鼠标移动按下按钮(因为没有它,它将只是一些点),我还在两个点之间的QPixmap上画线。它工作得很好,但我想知道是否有更优化的方法来做到这一点。下面是一些代码(我已经跳过部分与变焦,之间的连接丢失的像素到像素等)在QPixmap上优化绘图
void Editor::paintEvent(QPaintEvent *event)
{
painter.drawPixmap(QRect(0, 0, image.width() * zoom , image.height() * zoom),
image);
}
void Editor::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton)
{
setImagePixel(event->pos());
}
}
void Editor::mouseMoveEvent(QMouseEvent *event)
{
if(event->buttons() & Qt::LeftButton)
{
setImagePixel(event->pos(), true);
}
}
void Editor::setImagePixel(const QPoint &pos)
{
QPainter painter(&image);
if(image.rect().contains(i, j))
{
painter.begin(&image);
painter.setPen(primaryColor);
painter.drawPoint(i, j);
painter.end();
}
}
哇...非常感谢,真的有帮助!^_^ 我很高兴我不必重新发明车轮。祝你今天愉快。 –
还有一个问题。我试图使用不同宽度的笔。但它看起来不是很好,像这样 - > http://i.imgur.com/lNdKO.png。我想这是因为我一直在绘制很多路径。我怎样才能摆脱这一点? –
您是否尝试过'QPainter :: setRenderHint(QPainter :: Antialiasing,true)'?我不完全理解_I我一直在绘制大量路径_但我不确定它与渲染结果有关 – azf