首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QT在图片中绘制手绘线条图

使用QT在图片中绘制手绘线条图
EN

Stack Overflow用户
提问于 2012-05-22 19:43:59
回答 3查看 2.5K关注 0票数 1

我想创建一个事件,当一个按钮被按下时,程序应该允许使用鼠标指针在图片中绘制自由手线。目前我正处于可以在选项卡窗口中显示相册图片的阶段。有没有人可以通过提供一些指导或线索来帮助你?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-22 22:11:00

以下是如何使用鼠标移动进行绘制的示例:

http://qt-project.org/doc/qt-4.8/widgets-scribble.html

票数 0
EN

Stack Overflow用户

发布于 2012-05-22 21:34:12

恐怕你的问题很宽泛。我建议对你想要实现的目标做一些研究,也许可以看看其他人是如何解决同样的问题的。通过将它更多地用作回答特定问题的资源,您将获得最大的好处。

也就是说,这里有几个你可以看看的东西:

QGraphicsScene:可以包含大量2D图形对象(即允许用户绘制的线条)的表面

QGraphicsSceneMouseEvent:需要捕获和处理的事件,以便将鼠标输入到场景中。可以通过创建QGraphicsScene的子类并重新植入QGraphicsScene::mouseMoveEvent来处理此事件,也可以通过在场景中使用installing an eventFilter来处理此事件。

票数 0
EN

Stack Overflow用户

发布于 2012-05-22 22:05:38

如果您使用简单的QWidget (我的意思是,不是像QGraphicsScene这样复杂的东西)显示图片,只需重新实现QWidget::mouseMoveEvent(QMouseEvent *e)即可。当用户按下鼠标按钮(e->buttons() != 0)时,您可以在图片中进行绘画。

让我们假设您的图片位于成员QImage img中,并跟踪QPoint cursorLast中的前一个光标位置。我们还假设您使用类似于QLabel的方式显示图片,您只需在属性中设置图像即可。然后你可以像这样画画:

代码语言:javascript
复制
void MyWidget::mouseMoveEvent(QMouseEvent *e) {
    if(e->buttons()) {
        if(!cursorLast.isNull()) {
            QPainter p(&img); // and set pen
            p.drawLine(cursorLast, e->pos());
            p.end();
            setImage(img); // update image in your view
        }
        cursorLast = e->pos();
    }
}

当鼠标释放时,不要忘记重置cursorLast成员:

代码语言:javascript
复制
void MyWidget::mouseReleaseEvent(QMouseEvent *e) {
    cursorLast = QPoint(); // reset
}

请注意,这段代码没有经过测试,我可能在方法中使用了稍微错误的名称,但很容易找到真正的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10701357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档