2

我通过以下代码在画布中绘制了一个椭圆,并且效果很好:

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

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

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

提前致谢!

4

1 回答 1

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;
}
}

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

于 2013-04-02T04:09:46.840 回答