贝塞尔曲线和画布

edi*_*233 20 android android-canvas

如何在画布中绘制贝塞尔曲线.我只有起点和终点.我想从起点到终点画线.我怎么能这样做?

Ren*_*ard 31

你可以使用Path.quadTo()Path.cubicTo()为此.示例可以在SDK示例(FingerPaint)中找到.在你的情况下,你只需要计算中间点然后将你的三点传递给quadTo()..

一些代码给你:

  • (x1,y1)(x3,y3)分别是你的起点和终点.
  • 仅创建一次paint对象(例如在构造函数中)

    Paint paint = new Paint() {
        {
            setStyle(Paint.Style.STROKE);
            setStrokeCap(Paint.Cap.ROUND);
            setStrokeWidth(3.0f);
            setAntiAlias(true);
        }
    };
    
    final Path path = new Path();
    path.moveTo(x1, y1);
    
    final float x2 = (x3 + x1) / 2;
    final float y2 = (y3 + y1) / 2;
    path.quadTo(x2, y2, x3, y3);
    canvas.drawPath(path, paint);
    
    Run Code Online (Sandbox Code Playgroud)

  • 这会产生一条直线,如果你想要一条曲线,那么改变控制点,这里的 (x2,y2) 到别的东西。一个简单的例子是:- x2 = (x3+x1)/3 y2 = (y3+y1)/3 (2认同)

aro*_*ero 5

有了Path可以绘制立方和二次贝塞尔曲线.见cubicTo()quadTo()