我想在按下按鈕時創建事件程序應允許使用鼠標指針繪製圖片中的自由手繪線。目前我處於可以在選項卡窗口中顯示圖片專輯的階段。任何人都可以通過提供一些指導原則或線索幫助解決這個問題嗎?使用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#中的圖片框內繪圖