Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android路径在画布上两点之间添加圆弧_Android_Path_Android Canvas_Ondraw - Fatal编程技术网

Android路径在画布上两点之间添加圆弧

Android路径在画布上两点之间添加圆弧,android,path,android-canvas,ondraw,Android,Path,Android Canvas,Ondraw,我正试图在android中画一条弧线。 在IOS中,使用这种方法很容易做到 [path addArcWithCenter: radius: startAngle: endAngle: clockwise:] 在android中,我有3个点(圆心和两个点之间我想画一条弧): 但是如何使用Path.addArc方法在p1和p2之间绘制圆弧? 如()所述,我已经试过了: 但实际上它并没有画出预期的弧线。我不明白addArc方法的第一个参数是什么!RectF应该是什么 谢谢,第一个参数是定义圆弧形状和

我正试图在android中画一条弧线。 在IOS中,使用这种方法很容易做到

[path addArcWithCenter: radius: startAngle: endAngle: clockwise:]
在android中,我有3个点(圆心和两个点之间我想画一条弧):

但是如何使用Path.addArc方法在p1和p2之间绘制圆弧? 如()所述,我已经试过了:

但实际上它并没有画出预期的弧线。我不明白addArc方法的第一个参数是什么!RectF应该是什么


谢谢,

第一个参数是定义圆弧形状和大小的椭圆边界-这里的代码绝对正确。
问题可能在于,在iOS中,你必须使用弧度,但在Android中,你必须使用度。

path.addArc在路径的末尾添加一个圆弧。Android按顺时针方向绘制圆弧,因此当观察圆时,如果我的圆弧需要是四分之一圆,比如说如果是12点到3点的时钟,我需要RectF来表示其中的正方形,我可以绘制圆弧。另外两个参数是startAngle和sweepAngle。 在我的例子中,startAngle是270(12点是270,3点是0,6点是90,9点是180)。 扫掠角是弧的长度,在我的例子中是90。如果我想画一个半圆,那么它是180

如果希望逆时针绘制,则需要将“扫描角度”设置为负度。例如,从3点到12点的90度弧,我需要startAngle为90,扫掠角为-90

一篇很好的文章教会了我这一切,这篇文章就在这个链接中:

Point center = new Point(..., ...);
Point p1 = new Point(..., ...);
Point p2 = new Point(..., ...);

int radius = (int) Math.sqrt(Math.pow(p1.x - center.x, 2) + Math.pow(p1.y - center.y, 2));
RectF oval = new RectF();
oval.set(p2.x - radius, p2.y - radius, p2.x + radius, p2.y + radius);
path.addArc(oval, startAngle, endAngle - startAngle);
// startAngle : angle between horizontal axis and p1 point
// endAngle : angle between horizontal axis and p2 point