2012-04-03 12 views
20

Cómo puedo dibujar la curva de bezier en el lienzo. Solo tengo punto de inicio y final. Quiero dibujar una línea desde el punto de inicio hasta el punto final. ¿Como puedo hacer esto?Curva y lienzo de Bezier

Respuesta

29

Puede utilizar Path.quadTo() o Path.cubicTo() para eso. Se pueden encontrar ejemplos en los ejemplos de SDK (FingerPaint). En su caso sólo tendría que necesitan para calcular el punto medio y pasar a continuación, sus tres puntos a quadTo() ..

algo de código para usted:

  • (x1, y1) y(x3, y3) son sus puntos de inicio y final respectivamente.
  • crear el objeto pintura sólo una vez (por ejemplo, en su constructor)

    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

¿Puedes dar esto por la curva? –

+1

Esto da como resultado una línea recta, si quiere una curva, entonces cambie el punto de control, aquí (x2, y2) a alguna otra cosa. Un ejemplo rápido sería: - x2 = (x3 + x1)/3 y2 = (y3 + y1)/3 –

0

Es necesario ajustar el color ... su código es correcto y cambiar x3,x3 a x3,y3 en el quadTO().

Cuestiones relacionadas