现在我有一个使用Graphics(drawLine,drawArc等)绘制的篮球场,并且有一个mouseClicked事件,根据布尔值shotMade是否为真,在球场上绘制'X'或'O'(设置在底部框架使用“Make”和“Miss”按钮)。现在,我实际上将在getX() - 6和getY()+ 6处产生'X'或'O',以便'X'或'O'的中心将是在单击鼠标的位置绘制(使用g.drawString()将从左下角开始绘制'X'或'O',因此它不会直接居中)。
我的问题来自于我在两指针和三指针之间的区别。现在,在x值52和448的三点线上球场的角落处有直线垂直线,所以我知道x小于52或大于448的任何点击点都是3,任何ay值大于250的点,表示键的顶部,或沿弧的任何点的最高y值。为了确定弧上任意位置的三个或两个,我有一个想法,就是将用于绘制弧的每个x和y像素存储到两个ArrayLists中(一个用于x,一个用于y),当鼠标是单击一个点,它将在其列表中搜索x值,并检查y点是否大于其列表中对应点的y点。我用g.drawArc(52,-110,396,360,0,-180)绘制弧线,将其中心放在点(250,70)处。
所以使用所有这些信息,我首先想知道如何使用一些公式将每个像素值存储到ArrayList中来计算椭圆周围的每个点,然后我如何检查点击点是否确实是一两个。
感谢任何帮助,包括任何更有效的想法或其他想法。谢谢!
答案 0 :(得分:0)
看看java.awt.geom.Area
注意在课堂“区域”...... http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Area.html
....有一个方法包含(double x,double y),它返回boolean。方法“测试指定的坐标是否在Shape的边界内......”
也许您可以使用它来查找用户是否在定义2点区域的椭圆形状内单击。
另请注意,Area类可以使用Shape来定义它。