初始化先关操作
mPaint.setColor(Color.RED);
mPaint.setStrokeWidth(4);
mPaint.setStyle(Paint.Style.STROKE);复制代码
mPaint.setStyle(Paint.Style.FILL);
mPath.moveTo(100, 500);
mPath.lineTo(140, 800);//连线
mPath.lineTo(250, 600);//连线
mPath.close();//设置曲线是否闭合
canvas.drawPath(mPath, mPaint);
复制代码
可以看到下图效果
设置 mPaint.setStyle(Paint.Style.STROKE);效果如图
将 mPath.close();//设置曲线是否闭合 注释调后 连线将不会闭合
//添加子图形addXXX
// 添加弧形
mPath.addArc(200, 200, 400, 400, -225, 225);
前四个参数表示绘制的矩形区域,-255表示绘制的角度,255表示顺时针扫过的角度复制代码
//Path.Direction.CW表示顺时针方向绘制,CCW表示逆时针方向
mPath.addRect(500, 500, 900, 900, Path.Direction.CW);
//添加一个圆
mPath.addCircle(700,700, 200, Path.Direction.CW);
//添加一个椭圆
mPath.addOval(100,100,500,300, Path.Direction.CCW);
canvas.drawPath(mPath, mPaint);复制代码
mPath.addArc(200, 200, 400, 400, -225, 225);
//追加图形
//xxxTo画线
mPath.arcTo(400, 200, 600, 400, -180, 225, false);
canvas.drawPath(mPath, mPaint);复制代码
//forceMoveTo,true,绘制时移动起点,false,绘制时连接最后一个点与圆弧起点
mPath.moveTo(0, 0);
mPath.lineTo(100, 100);
mPath.arcTo(400, 200, 600, 400, 0, 270, true);
canvas.drawPath(mPath, mPaint);复制代码
//forceMoveTo,true,绘制时移动起点,false,绘制时连接最后一个点与圆弧起点
mPath.moveTo(0, 0);
mPath.lineTo(100, 100);
mPath.arcTo(400, 200, 600, 400, 0, 270, false);
canvas.drawPath(mPath, mPaint);复制代码
//添加一个路径
mPath.moveTo(100, 70);
mPath.lineTo(140, 180);
mPath.lineTo(250, 330);
mPath.lineTo(400, 630);
mPath.lineTo(100, 830);
Path newPath = new Path();
newPath.moveTo(100, 1000);
newPath.lineTo(600, 1300);
newPath.lineTo(400, 1700);
mPath.addPath(newPath);
canvas.drawPath(mPath, mPaint);复制代码
//添加圆角矩形, CW顺时针,CCW逆时针
RectF rectF5 = new RectF(200, 800, 700, 1200);
mPath.addRoundRect(rectF5, 20, 20, Path.Direction.CCW);
canvas.drawPath(mPath, mPaint);复制代码
path 用来绘制塞尔曲线
1阶贝塞尔曲线就是一条直线
mPath.moveTo(100, 70); //移动
mPath.lineTo(140, 800);//连线
二阶贝塞尔曲线
mPath.moveTo(300, 500);
mPath.quadTo(500, 100, 800, 500);
canvas.drawPath(mPath, mPaint);复制代码
三阶贝塞尔曲线
mPath.moveTo(300, 500);
mPath.cubicTo(500, 100, 600, 1200, 800, 500);
canvas.drawPath(mPath, mPaint);复制代码