先看图
在线贝塞尔曲线获取坐标

根据期提供的 位置我们在android 上面看看是什么样子的
<code>
float startX= 100;
float startY=250;
float endX=200;
float endY=250;
Path path= new Path();
path.moveTo(startX, startY);
path.cubicTo(350, 250, 100, 350, endX, endY);
canvas.drawPath(path,getBrokenLinePaint());
</code>

问题来了 这个大小是固定的所以我们需要做一些处理
从上面我们可以看到 endx 与startx 的距离是100
- 第一个控制点 350 250 如果按照比例换算的话
X比例(350-100) / 100 =2.5
Y比例 (endY-250) /100 = 0 - 第二个控制点 100 350
X比例(100-100) / 100 =0
Y比例 (endY-350) /100 = -1
那么代码最终就变成了 我们来看看效果图 ,看起来大小没什么变化
<code>
float startX= 100;
float startY=250;
float endX=200;
float endY=250;
float wt=endX-startX;
float x1= (float) (startX+wt*2.5);
float y1= startY+ wt*0;
float x2=startX+ wt*0;
float y2=startY - wt*-1;
Path path= new Path();
path.moveTo(startX, startY);
path.cubicTo(x1, y1, x2, y2, endX, endY);
canvas.drawPath(path,getBrokenLinePaint());
</code>

我们把endX修改成400看看 是否变形


网友评论