我想在按下按钮时创建事件程序应允许使用鼠标指针绘制图片中的自由手绘线。目前我处于可以在选项卡窗口中显示图片专辑的阶段。任何人都可以通过提供一些指导原则或线索帮助解决这个问题吗?使用QT的图片中的自由手绘线性绘图
0
A
回答
0
下面是如何使用鼠标移动油漆的例子:
0
你的问题相当宽泛,恐怕。我建议对你想达到的目标进行一些研究,也许看看其他人如何解决同样的问题。您将通过更多地使用它作为回答特定问题的资源来充分利用它。
也就是说,这里有几件事情你可以看看:
QGraphicsScene
:表面可能含有大量的2D图形对象(即,你会允许用户绘制线条)
QGraphicsSceneMouseEvent
:事件你需要捕捉和处理,以便从鼠标输入到你的场景。您可以通过在您的场景中创建QGraphicsScene
的子类和重新执行QGraphicsScene::mouseMoveEvent
或installing an eventFilter来处理此事件。
0
如果您使用简单的QWidget(我的意思是,不像QGraphicsScene那样复杂)显示图片,只需重新实现QWidget::mouseMoveEvent(QMouseEvent *e)
。当用户按下鼠标按钮(e->buttons() != 0
)时,您可以在图片中进行绘画。
让我们假设你在会员QImage img
中有你的照片,并跟踪QPoint cursorLast
中的前一个光标位置。我们还假设您使用类似QLabel的东西显示图片,您可以在其中将图片设置为属性。那么你可以做这样的画:
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
成员,当鼠标被释放:
void MyWidget::mouseReleaseEvent(QMouseEvent *e) {
cursorLast = QPoint(); // reset
}
注意,该代码没有进行测试,我也可以在方法中使用了一些错误的名字,但是很容易找到真正的名字。
相关问题
- 1. ASP.NET中的自由手绘线程AJAX
- 2. 使用核心图形提高自由绘图的性能
- 3. qgraphicsview的自由手绘
- 4. Qt绘图行
- 5. 的绘图线
- 6. 的绘图线
- 7. 绘图用手指
- 8. 使用Qt绘制Sin(x)的图形
- 9. 自定义绘图的QSlider(Qt)
- 10. 自由绘图问题?
- 11. 寻找高性能的Java xy线绘图仪/绘图仪
- 12. Qt:绘制三角形图片
- 13. QT QGraphicsScene绘图弧
- 14. 如何在图片中使用Python绘图线?
- 15. 绘制自定义视图中的线
- 16. Qt绘图应用程序
- 17. 绘图线的JavaScript
- 18. 在Google地图上通过手指自由地绘图
- 19. 用图片框图像上的线程绘图
- 20. vb.net中的绘图线
- 21. Java中的绘图线
- 22. Python中的手动直方图绘图
- 23. 使用自定义绘图与MapView的奇怪绘图artifact
- 24. 如何在Qt中使用QPainter.drawImage在jpeg/png图片的背景图片上绘制jpeg/png图片?
- 25. C#绘图线
- 26. 绘图线
- 27. 绘图线5
- 28. Intrafilular线绘图?
- 29. Matplotlib - 绘图线与绘图框合并
- 30. 在C#中的图片框内绘图