我通过以下代码在画布中绘制了一个椭圆,并且效果很好:
Paint paint = new Paint();
canvas.drawOval(new RectF(10, 10, 300, 100), paint);
当用户点击屏幕时,我如何确定用户是否在椭圆内点击?
注意:当我绘制一个 Rect 时,我可以使用 Rect.contains(int x, int y) 来确定用户是否在其中点击。但现在我正在画一个椭圆形。
提前致谢!
当您触摸屏幕时,您将获得x
和y
坐标。您也可以知道中心或椭圆形。
x, y
是触摸时center_x
的center_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;
}
}
实际上,此解决方案适用于一个圆圈,但您可以使用它获得一个很好的近似值,或者可能会敞开心扉为您的目的更改此代码。