2012-04-03 83 views
20

如何在画布上绘制贝塞尔曲线。我只有起点和终点。我想画出从起点到终点的线。我如何做到这一点?贝塞尔曲线和画布

回答

29

您可以使用Path.quadTo()或​​。示例可以在SDK示例(FingerPaint)中找到。在你的情况,你就只需要计算中间点,然后通过你的三个点quadTo() ..

一些代码对你:

  • (X1,Y1)(X3,Y3 )分别是你的起点和终点。
  • 创建喷漆的对象只有一次(例如,在你的构造函数)

    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); 
    
+0

你可以给这个曲线吗? – 2014-07-12 08:02:45

+1

如果你想要一条曲线,这将产生一条直线,然后将控制点(这里是(x2,y2))改为其他的东西。 一个简单的例子是: - x2 =(x3 + x1)/ 3 y2 =(y3 + y1)/ 3 – 2015-03-30 12:22:24

0

您需要设置颜色......你的代码是正确的,并在quadTO()改变x3,x3x3,y3