美文网首页
Canvas drawPath

Canvas drawPath

作者: 雨来 | 来源:发表于2020-07-22 12:43 被阅读0次
public class PathView extends View {

    private Paint mPaint;
    private Path mPath;

    public PathView(Context context) {
        this(context, null);
    }

    public PathView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

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

    private void initPaint() {
        //初使化paint
        mPaint = new Paint();
        mPaint.setAntiAlias(true); //设置抗锯齿
        mPaint.setColor(Color.RED); //设置画笔的颜色
        mPaint.setStyle(Paint.Style.STROKE); //设置画笔的样式
        mPaint.setStrokeWidth(4); //边框的size
        mPath = new Path();
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    @Override
    protected void onDraw(Canvas canvas) {
//        super.onDraw(canvas);
        canvas.drawColor(Color.WHITE);
        mPath.moveTo(300, 200);
        mPath.lineTo(100, 600);
        mPath.lineTo(500, 600);
        mPath.close();
        canvas.drawPath(mPath, mPaint);
        int layer = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG); //新建一个图层
        canvas.drawColor(Color.argb(125,255,0,0));
        mPaint.setColor(Color.BLUE);
        Path newPath = new Path();
        newPath.moveTo(100,100);
        newPath.lineTo(100,300);
        newPath.lineTo(300,200);
        newPath.close();
        canvas.drawPath(newPath, mPaint);
        canvas.restoreToCount(layer);


    }
}
image.png
在我们drawPath的时候如果设置 paint的颜色 我们要重新 new 一个path
Path newPath = new Path();
至于是否新建图层则无所谓 看自己项目的需求了
int layer = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG); //新建一个图层
三级贝塞尔曲线
image.png
image.png
image.png

效果是:


image.png

相关文章

网友评论

      本文标题:Canvas drawPath

      本文链接:https://www.haomeiwen.com/subject/qtvzkktx.html