android 贝塞尔曲线,即3点画弧线

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jian11058/article/details/82968768

如题,已知3点画弧线

主要方法为:

path.moveTo(x1,y1);//设置起点
path.quadTo(x2,y2,x3,y3);//3点画弧
//x2,y2表示为中点坐标,x3,y3表示终点坐标
package com.fpt.drawlineview;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;

public class MyDrawQuad extends View {
    private Paint paint;
    private Path path;
    public MyDrawQuad(Context context) {
        super(context);
        initData();
    }

    public MyDrawQuad(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        initData();
    }

    public MyDrawQuad(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initData();
    }

    public MyDrawQuad(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        initData();
    }
    public void initData(){
        paint=new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setStyle(Paint.Style.STROKE);//设置为不实心
        path=new Path();
        paint.setStrokeWidth(1);
        paint.setColor(Color.WHITE);
        paint.setTextSize(52);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int x1=200,y1=200;
        int x3=400,y3=200;

        int x2=(x1+x3)/2,y2=y1+30;
        path.moveTo(x1,y1);//起点
        path.quadTo(x2,y2,x3,y3);//3点画弧

        int xa1=150,ya1=400;
        int xa3=450,ya3=400;
        int xa2=(xa1+xa3)/2,ya2=460;

        path.moveTo(xa1,ya1);
        path.quadTo(xa2,ya2,xa3,ya3);
        path.moveTo(x1,y1);
        path.lineTo(xa1,ya1);
        path.moveTo(x3,y3);
        path.lineTo(xa3,ya3);
        canvas.drawPath(path,paint);

    }
}

猜你喜欢

转载自blog.csdn.net/jian11058/article/details/82968768