我在计算如何确定在矩形内是否点击鼠标点击事件(如果矩形已旋转)时遇到了一些问题。确定在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