android - 如何确定用户是否触摸了 Canvas 中的椭圆?

标签 android canvas

我按照代码在 Canvas 上画了一个椭圆,效果很好:

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

当用户点击屏幕时,如何判断用户点击是否在椭圆内?

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

提前致谢!

最佳答案

当您触摸屏幕时,您将获得 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;
}
}

实际上这个解决方案是针对一个圆的,但你可以使用它得到一个很好的近似值,或者可以敞开心扉根据你的目的更改此代码。

关于android - 如何确定用户是否触摸了 Canvas 中的椭圆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15755823/

相关文章:

android - 使用独立线程 Android 在 Canvas 上绘图

javascript - 如何使用 Pixijs 获取加载的 Sprite 表资源中定义的图像

java - 将自定义形状应用于 Android ListView

javascript - Android 互联网应用程序无法正确呈现移动网站版本

android - 将图像从 sdcard 加载到 imageview 不工作

android - 在 android Canvas 中使用 cubicTo 绘制云形状

java - 在 Java Android 中动态编辑/创建类

Android:如何在点击不可见按钮时调用函数?

javascript - 将 Canvas 对象保存为 json

android - 如何覆盖 View 中的 Canvas ?