gpt4 book ai didi

c++ - 优化 QPixmap 绘图

转载 作者:行者123 更新时间:2023-11-28 08:13:34 26 4
gpt4 key购买 nike

我有一个关于如何实现某种图形编辑器的小问题。对于绘图,我使用这种方法:首先我检查鼠标左键是否被点击,然后我在我的 QPixmap 上的 event->pos() 处绘制一个像素,然后我调用 update();重绘它。如果按下按钮移动鼠标,我还会在 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();
}
}

最佳答案

是的,我会使用 QPainterPath 及其 API 来绘制手工制作的形状。查看它的方法:moveTo()lineTo(),它们可以让您摆脱绘图逻辑(缺少像素等)。也很容易与鼠标事件结合。

希望这对您有所帮助。

关于c++ - 优化 QPixmap 绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8377005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com