【发布时间】:2011-05-10 22:50:28
【问题描述】:
我有两个圆点和这个圆的中心。我想在这些点之间画一条弧线。方法drawArc 很简单,不符合我的目的。
有人帮忙吗?
【问题讨论】:
-
这是作业吗?如果是这样,请标记它。
-
我知道有很多绘制Arc的函数,但我找不到合适的
标签: java drawing geometric-arc
我有两个圆点和这个圆的中心。我想在这些点之间画一条弧线。方法drawArc 很简单,不符合我的目的。
有人帮忙吗?
【问题讨论】:
标签: java drawing geometric-arc
Graphics.drawArc 需要以下参数:
根据您的弧线起点和终点,可以计算出将在其中绘制弧线的边界框。这为您提供了足够的信息来提供参数:x、y、宽度和高度。
你没有指定想要的角度,所以我猜你可以任意选择一个。
【讨论】:
你可以使用 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 类型,您可能会创建很多零。
canvas.drawArc()多了2个参数,专为API 21设计。如果需要