- moveTo,lineTo,setLastPoint,close
//从0.0 连接 400,600
mPath.lineTo(400f,600f)
//重置上一点相当于 0,0 到 600,200, 设置之前操作的最后一个点位置(会影响之前跟之后的起始点)
//mPath.setLastPoint(600f,200f)
//从 400,600 连接 900,100
mPath.lineTo(900f,100f)
//开始绘制
anvas!!.drawPath(mPath,mPathPaint)
我们把上面注释放开,如下代码:
//从0.0 连接 400,600
mPath.lineTo(400f,600f)
//重置上一点相当于 0,0 到 600,200, 设置之前操作的最后一个点位置(会影响之前跟之后的起始点)
mPath.setLastPoint(600f,200f)
//从 600,200 连接 900,100
mPath.lineTo(900f,100f)
//开始绘制
anvas!!.drawPath(mPath,mPathPaint)
实现效果如下:
通过上图我们发现 setLastPoint 设置了之后改变了之前的最后一次的坐标点,可以理解为更新最后一点的坐标,我们发现每次都是从坐标角 (0,0) 开始绘制,那么有没有一个方法指定从哪个起点开始绘制,正好,你可以试试 moveTo 它可以指定 path 的起点,如下代码:
//moveTo 设置起点
mPath.moveTo(600f,200f)
//从0.0 连接 400,600
mPath.lineTo(400f,600f)
mPath.lineTo(800f,300f)
//最后一点和起点封闭
mPath.close()
通过上图我们先利用 Path#moveTo
将 Path 起点设置为 (400,600) 开始绘制,最后调用了 Path#close
将为闭合的连接线闭合。
- addXxx 系列
我们就
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
以 矩形,圆角矩形,椭圆,圆,圆弧 的顺序绘制
//Path.Direction.CW/CCW 顺时针/逆时针
//1. 添加矩形到 Path
void addRect (float left, float top, float right, float bottom, Path.Direction dir)
//2. 添加 圆角矩形到 Path
void addRoundRect (RectF rect, float[] radii, Path.Direction dir)
void addRoundRect (RectF rect, float rx, float ry, Path.Direction dir)
//3. 添加 椭圆 到 Path
void addOval (RectF oval, Path.Direction dir)
//4. 添加 圆 到 Path
void addCircle (float x, float y, float radius, Path.Direction dir)
//5. 添加 圆弧 到 Path ,直接添加一个圆弧到path中
void addArc (RectF oval, float startAngle, float sweepAngle)
//添加一个圆弧到 path,如果圆弧的起点和上次最后一个坐标点不相同,就连接两个点
void arcTo (RectF oval, float startAngle, float sweepAngle)
void arcTo (RectF oval, float startAngle, float sweepAngle, boolean forceMoveTo)
mPathPaint.textSize = 50f
//1. 添加矩形到 Path
mPath.addRect(100f,300f,400f,700f,Path.Direction.CW)//顺时针
canvas!!.drawText(“1”,200f,500f,mPathPaint)
//2. 添加 圆角矩形到 Path
mPath.addRoundRect(100f + 500,300f,1000f ,700f,30f,30f,Path.Direction.CCW)//逆时针
canvas!!.drawText(“2”,800f,500f,mPathPaint)
//3. 添加 椭圆 到 Path
mPath.addOval(100f,1300f,600f ,1000f,Path.Direction.CCW)//逆时针
canvas!!.drawText(“3”,300f,1150f,mPathPaint)
//4. 添加 圆 到 Path
mPath.addCircle(850f,1200f ,150f,Path.Direction.CCW)//逆时针
canvas!!.drawText(“4”,850f,120