2012-04-03 7 views
20

Come posso disegnare la curva di Bezier nella tela. Ho solo inizio punto e punto finale. Voglio tracciare una linea dal punto iniziale al punto finale. Come posso farlo?Curva di Bezier e tela

risposta

29

È possibile utilizzare Path.quadTo() o Path.cubicTo() per quello. Gli esempi possono essere trovati negli esempi SDK (FingerPaint). Nel tuo caso si avrebbe semplicemente bisogno di calcolare il punto di mezzo e superare quindi i vostri tre punti per quadTo() ..

Alcuni codice per voi:

  • (x1, y1) e (x3, y3) sono rispettivamente i punti di partenza e di arrivo.
  • creare l'oggetto vernice solo una volta (per esempio nel costruttore)

    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

puoi dare questo per curva? –

+1

Questo si traduce in una linea retta, se si desidera una curva, quindi modificare il punto di controllo, qui (x2, y2) per qualcos'altro. Un esempio rapido potrebbe essere: - x2 = (x3 + x1)/3 y2 = (y3 + y1)/3 –

0

È necessario impostare il colore ... il codice è corretto e cambiare x3,x3-x3,y3 nel quadTO().