我有两个圆点和圆圈的中心.我想在这些点之间画一条弧.方法drawArc很简单,不符合我的目的.有人帮忙吗?
我正在尝试在android中实现交互动画,用户可以在其中更改对象的大小并通过交互旋转它.
这不是我想要实现的,但类似的东西.
我想让用户改变角度线'p',并且角度'a'应该改变.移动'p'wrt中心应该允许形状的大小改变.
我已经尝试了动画和动画师类,但它们并没有完全达到目的.
我不是要求任何代码,我只需要一个指针就可以实现.
我已经尝试了很多不同的方法来自网络上的例子,但我似乎无法让这个工作.我正在尝试制作一种在画布上的两点之间绘制曲线的方法.曲线应由radius参数定义.
以下是我目前的代码.
public OverlayBuilder drawCurvedArrow(int startX, int startY, int endX, int endY, int curveRadius, int padding, int color) {
PointF mPoint1 = new PointF(startX, startY);
PointF mPoint2 = new PointF(endX, endY);
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(12);
paint.setColor(color);
Path myPath = new Path();
myPath.moveTo(startX, startY);
myPath.quadTo(mPoint1.x, mPoint1.y, mPoint2.x, mPoint2.y);
canvas.drawPath(myPath, paint);
return this;
}
Run Code Online (Sandbox Code Playgroud)
问题是我无法弄清楚如何弯曲画布上绘制的线条.
我正在尝试在 android 中绘制一条弧线。在IOS中,用这个方法真的很容易做到
[path addArcWithCenter: radius: startAngle: endAngle: clockwise:]
Run Code Online (Sandbox Code Playgroud)
在 android 中,我有 3 个点(我的圆心,以及我想在它们之间画一条弧线的两个点):
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));
Run Code Online (Sandbox Code Playgroud)
但是如何使用 Path.addArc 方法在 p1 和 p2 之间绘制弧线?我已经尝试过(如何在画布上的两点之间绘制圆弧?):
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 …Run Code Online (Sandbox Code Playgroud)