2015-05-06 7 views
6

zeichnen Ich habe eine Anforderung, Bezier-Kurve in meinem Projekt zu erstellen. Zu diesem Zweck zeichne ich eine Ansicht mit Farbe, aber das Problem ist, dass ich nicht die genaue Form für meine Bedürfnisse bekomme, wie im Bild unten erwähnt. Bitte helfen Sie mir mit Ihren Lösungen und Änderungen oder Änderungen in meinem Code. Danke im Voraus.Wie Bézier Kurve in Android

-Code Ich bin mit Bezier-Kurven zu erstellen:

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

    } 
} 

Mein tatsächlicher Bedarf:

enter image description here

Ausgabe, die ich erhalte:

enter image description here

Antwort

6

Nach einem langen Kampf fand ich die Ursache meines Problems von Grund auf. Danke für die tool, die mir geholfen hat, die Koordinaten zu generieren und auch die blog, die mir die genaue Probe für meine Bedürfnisse zeigte. Schließlich ist mein Code wie folgt:

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

Der Blog und das Tool ist die Antwort! – murt

0

Sie haben Ihren Weg nicht geschlossen und stellen keine Farbe für Sie malen.