我有一个圆的两个点和这个圆的中心点,想在这两个点之间绘制一条弧线。但是使用drawArc
方法太简单了,不符合我的要求。有人能帮忙吗?
我有一个圆的两个点和这个圆的中心点,想在这两个点之间绘制一条弧线。但是使用drawArc
方法太简单了,不符合我的要求。有人能帮忙吗?
你可以使用Canvas.drawArc,但是你必须计算出它需要的参数:
假设圆心为(x0, y0),圆弧包含你的两个点(x1, y1)和(x2, y2),那么半径为:r=sqrt((x1-x0)(x1-x0) + (y1-y0)(y1-y0))。因此:
int r = (int)Math.sqrt((x1-x0)*(x1-x0) + (y1-y0)*(y1-y0));
int x = x0-r;
int y = y0-r;
int width = 2*r;
int height = 2*r;
int startAngle = (int) (180/Math.PI*atan2(y1-y0, x1-x0));
int endAngle = (int) (180/Math.PI*atan2(y2-y0, x2-x0));
canvas.drawArc(x, y, width, height, startAngle, endAngle);
祝你好运!
float
变量而不是int
变量,此代码将运行得更好。 PI=3.14,平方根等等。如果坚持使用int
类型,可能会创建很多零。 - user153923canvas.drawArc()
方法有两个额外的参数,是为 API 21 设计的。如果你需要在 API 21 以下使用,请使用重载版本。 - CoolMindGraphics.drawArc
需要以下参数:
根据你的圆弧起点和终点,可以计算出圆弧将被绘制的边界框。这为您提供了足够的信息来提供参数:x、y、width 和 height。
您没有指定所需的角度,因此我猜您可以任意选择一个。