我一直在看Java2D教程,並想知道如何使用鼠標繪製形狀來定義其大小(即形狀的大小不固定)。我還沒有遇到專門針對這個問題的教程,並且想知道如何以矩形爲例來實現這個功能。繪製一個具有未定義大小的形狀
0
A
回答
1
基本上,大小在每個時刻都是固定的。當您添加MouseMotionListener
時,在捕獲下一個事件之前,可以在屏幕上繪製形狀,尺寸取決於當前的MouseEvent.getPoint()
,它告訴您鼠標位置的座標。
重寫組件的paintComponent(Graphics g)
方法。並調用repaint()
方法鼠標位置的每次更新和形狀的大小後:
class YourPanel extends JPanel extends MouseMotionListener, MouseListener {
private Rectangle rect = new Rectangle();
public YourPanel() {
addMouseListener(this);
addMouseMotionListener(this);
}
@Override
public void paintComponent (Graphics g) {
super.paintComponent(g);
g.draw(rect);
}
@Override
public void mouseDragged (MouseEvent me) {
rect.setSize(me.getX() - rect.x, me.getY() - rect.y);
repaint();
}
@Override
public void mousePressed (MouseEvent me) {
rect.setLocation(me.getX(), me.getY());
repaint();
}
// Other methods...
}
0
形狀是一個字和java類,表示像矩形,橢圓,聚線路等
目前存在的幾何圖形因此,首先,用戶將必須決定哪些形狀,e.g聚線。
然後您將捕獲鼠標左鍵單擊事件,並且對於每次點擊,讀取鼠標座標並將該座標對(例如java.awt.geom.Point2D())添加到ArrayList<Point2D>
。 這樣的清單的大小(實際上)是無界的。
在每次點擊時,您將創建一個將被繪製的當前形狀對象。一旦用戶點擊鼠標右鍵,形狀就會準備就緒,並且您可以將其存儲在形狀列表中。
0
你應該有你的類實現鼠標監聽器,然後保存鼠標偵聽器的變量用的getX和的getY繪製形狀。
相關問題
- 1. 繪製一個沒有XAML的形狀
- 2. 繪製一個Rosetta形狀
- 3. 只有兩個形狀之一繪製
- 4. Libgdx和Box2D繪製一個自定義的形狀
- 5. 以自定義形狀繪製像素
- 6. 安卓繪製自定義形狀
- 7. Android:繪製自定義形狀
- 8. 繪製並填充自定義形狀
- 9. 具有自定義形狀的iOS UIButton
- 10. 用繪製圖形方法繪製一個形狀?
- 11. Android編程,繪製一個具有特定座標的矩形
- 12. OpenGL - 繪製具有紋理的2D多邊形形狀
- 13. 設置在另一個形狀上繪製的形狀爲Invisible
- 14. 如何調整在畫布上繪製的形狀的大小
- 15. 調整在cnvas上繪製形狀的html5畫布的大小
- 16. 繪製一個形狀堆棧
- 17. 如何繪製一個CSS形狀
- 18. 繪製不規則形狀具有單個環路
- 19. Android - 多種顏色和大小可繪製的形狀樣式
- 20. 更改視圖大小以匹配繪製的形狀
- 21. 在相對大小的畫布上繪製形狀
- 22. 繪製具有特定位置,大小和旋轉的圖像
- 23. Imagemagick - 相對於另一個形狀位置繪製形狀
- 24. Android:在另一個形狀內繪製形狀
- 25. 移動後未繪製SFML形狀
- 26. 如何在DrawingArea上繪製一個具有特定大小和X Y位置的簡單矩形?
- 27. 如何定義一個未定義大小的向量
- 28. 繪製正方形的面積大小
- 29. Cocos2d-X:CCDrawNode繪製圓形/自定義形狀
- 30. 捕獲用戶輸入繪製對稱線對具有一定形狀
您是否嘗試過http://docs.oracle.com/javase/7/docs/api/java/awt/event/MouseMotionListener.html? – Swapnil