我在計算如何確定在矩形內是否點擊鼠標點擊事件(如果矩形已旋轉)時遇到了一些問題。確定在Java中旋轉矩形內的鼠標點擊(AWT,擺動)
可以說我有一個像這樣簡單的MouseAdapter。它只是打印出一條聲明,說如果mousePressed實際上位於矩形內,我們就會打到矩形內。
MouseAdapter mAdapter = new MouseAdapter() {
public void mousePressed(MouseEvent e) {
int xPos = e.getX();
int yPos = e.getY();
if(xPos >= rect.x && xPos <= rect.x + rect.width && yPos >= rect.y && yPos <= rect.y + rect.height) {
System.out.println("HIT INSIDE RECTANGLE");
}
}
};
我的問題來自於當我旋轉矩形。上面的if語句顯然不考慮旋轉,所以在旋轉矩形後,我的命中測試失敗。對於旋轉,我做的paint()函數,因爲這簡單的東西:
class drawRect {
Rectangle rect = new Rectangle();
...
public void paint(Graphics g) {
Graphcis2D g2 = (Graphics2D) g;
AffineTransform old = g2.getTransform();
g.rotate(Math.toRadians(90), rect.x, rect.y);
g2.draw(rect);
g2.setTransform(old);
}
}
這僅僅是一些快速的僞代碼,這樣你們可以理解我試圖做的。所以請不要擔心語法和所有這些。任何幫助,將不勝感激!
我認爲Rectangle類已經這樣做了一下:http://docs.oracle.com/javase/7/docs/api/java/awt/Rectangle.html#contains(int,INT ) – emin 2013-02-08 20:33:10
還有一個工作示例[此處](http://stackoverflow.com/a/2244285/230513)。 – trashgod 2013-02-09 02:03:29