2015-05-06 19 views
6

Ho un requisito per creare una curva di Bezier nel mio progetto. A tale scopo, sto disegnando una vista con la vernice, ma il problema è che non riesco a ottenere la forma esatta per il mio bisogno, come menzionato nell'immagine qui sotto. Quindi gentilmente aiutami con le tue soluzioni e modifiche o modifiche nel mio codice. Grazie in anticipo.Come disegnare Bezier Curve in Android

codice che sto usando per creare Bezier Curve:

public class DrawView extends View { 

    public DrawView (Context context) { 
     super (context); 
    } 

    protected void onDraw (Canvas canvas) { 
     super.onDraw (canvas); 

     Paint pLine = new Paint() {{ 
      setStyle (Paint.Style.STROKE); 
      setAntiAlias (true); 
      setStrokeWidth (1.5f); 
      setColor (Color.RED); // Line color 
     }}; 

     Paint pLineBorder = new Paint() {{ 
      setStyle (Paint.Style.STROKE); 
      setAntiAlias (true); 
      setStrokeWidth (3.0f); 
      setStrokeCap (Cap.ROUND); 
      setColor (Color.RED); // Darker version of the color 
     }}; 
     Path p = new Path(); 
     Point mid = new Point(); 
     // ... 
     Point start =new Point (30,90); 
     Point end =new Point (canvas.getWidth()-30,140); 
     mid.set ((start.x + end.x)/2, (start.y + end.y)/2); 

     // Draw line connecting the two points: 
     p.reset(); 
     p.moveTo (start.x, start.y); 
     p.quadTo ((start.x + mid.x)/2, start.y, mid.x, mid.y); 
     p.quadTo ((mid.x + end.x)/2, end.y, end.x, end.y); 

     canvas.drawPath (p, pLineBorder); 
     canvas.drawPath (p, pLine); 
    } 
} 

MainActivity

public class MainActivity extends Activity { 

    private DrawView drawView; 

    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate (savedInstanceState); 
     drawView = new DrawView (this); 
     setContentView (drawView); 

    } 
} 

mio bisogno reale:

enter image description here

uscita che sto ottenendo:

enter image description here

risposta

6

Dopo una lunga lotta ho trovato la causa principale del mio problema fin dall'inizio. Grazie per il tool che mi ha aiutato a generare le coordinate e anche il blog che mi ha mostrato il campione esatto per il mio bisogno. Finalmente il mio codice è il seguente:

public class DrawView extends View { 

    Paint paint; 
    Path path; 

    public DrawView(Context context) { 
     super(context); 
     init(); 
    } 

    public DrawView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public DrawView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(); 
    } 

    private void init(){ 
     paint = new Paint(); 

     paint.setStyle(Paint.Style.STROKE); 

    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     // TODO Auto-generated method stub 
     super.onDraw(canvas); 
     path = new Path(); 
     paint.setColor(Color.RED); 
     paint.setStrokeWidth(3); 
     path.moveTo(34, 259); 
     path.cubicTo(68, 151, 286, 350, 336, 252); 
     canvas.drawPath(path, paint); 

    } 
+0

Il blog e lo strumento è la risposta! – murt

0

Non hai chiuso il tuo percorso e non impostare un colore per dipingere.