edi233
edi233

Reputation: 3031

Bezier curve and canvas

How I can draw bezier curve in canvas. I have only start point and end point. I want to draw line from start point to end point. How I can do this?

Upvotes: 21

Views: 30045

Answers (3)

Renard
Renard

Reputation: 6929

You can use Path.quadTo() or Path.cubicTo() for that. Examples can be found in the SDK Examples (FingerPaint). In your case you would simply need to calculate the middle point and pass then your three points to quadTo()..

Some code for you:

  • (x1,y1) and (x3,y3) are your starting and ending points respectively.
  • create the paint object only once (e.g. in your 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);
    

Upvotes: 31

Ravee S Gohiel
Ravee S Gohiel

Reputation: 79

You need to set color...your code is correct and change x3,x3 to x3,y3 in the quadTO().

Upvotes: 0

aromero
aromero

Reputation: 25761

With Path you can draw cubic and quadratic bezier curves. See cubicTo() and quadTo()

Upvotes: 5

Related Questions