2012-04-03 78 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