如何判断用户是否在画布上触摸椭圆?

时间:2013-04-02 04:01:00

标签: android canvas

我通过以下代码在画布上绘制一个椭圆形,并且工作正常:

Paint paint = new Paint();
canvas.drawOval(new RectF(10, 10, 300, 100), paint);

当用户点击屏幕时,我如何确定用户是否在椭圆内点击?

注意: 当我绘制一个Rect时,我可以使用Rect.contains(int x,int y)来确定用户是否在其中单击。但现在我画了一个椭圆形。

提前致谢!

1 个答案:

答案 0 :(得分:1)

当您触摸屏幕时,您将获得xy坐标。你也可以知道中心或椭圆形。

触摸时

x, y是坐标,center_xcenter_y是椭圆中心的坐标。 R是半径。

float dx = Math.abs(x-center_x);
float dy = Math.abs(y-center_y);
float R = radius ;//radius of circle.

boolean checkDistance(float dx,float dy,float R)
{
if(dx>R)
{
return false;//outside
}
else if(dy>R)
{
return false;//
}
else
{
return true;
}
}

实际上这个解决方案适用于一个圆圈但您可以使用它获得一个很好的近似值,或者可能会打开您的想法来更改此代码以用于您的目的。