自学——PaintAndPath

mPath.moveTo(x,x);设置起点,mPath.lineTo(x,x);来设置下一个点,以此类推可以设置若干点,如果想要起点和终点连起来就调用mPath.close()。

PathEffect创建画笔绘制Path的路径效果(mPaint.setPathEffect(子类对象)),canvas.drawPath来进行绘制。有以下几个子类:

//拐角路径效果(变成有弧度的角),参数是弧度
mEffects[1] = new CornerPathEffect(10) ;
//离散路径效果,第一个参数是隔多长画一个偏离点,第二个参数是偏离出多远
mEffects[2] = new DiscretePathEffect(3, 5) ;
//扩折号路径效果,float数组必须是偶数个,奇数是画出的长度,偶数是空出的长度
mEffects[3] = new DashPathEffect(new float[]{30, 20, 5, 20}, 5) ;
//定义扩折号的形状
Path p = new Path() ;
//在这定义成正方形,最后一个参数是绘制的方向(counter-clockwise逆时针,clockwise是顺时针)
p.addRect(0, 0, 8, 8, Path.Direction.CCW);
//定义一个具有自定义形状的扩折号路径效果,第二个参数是间隔距离,第三个参数是相位,为了实现动画效果而存在,最后一个是连接的方式,形式有Style.ROTATEStyle.MORPHStyle.TRANSLATE。其中ROTATE的情况下,线段连接处的图形转换以旋转到与下一段移动方向相一致的角度进行转转,MORPH时图形会以发生拉伸或压缩等变形的情况与下一段相连接,TRANSLATE时,图形会以位置平移的方式与下一段相连接。
mEffects[4] = new PathDashPathEffect(p, 12, 1, PathDashPathEffect.Style.ROTATE) ;
//第一个参数的效果在外面包裹着第二个参数的效果
mEffects[5] = new ComposePathEffect(mEffects[2], mEffects[4]) ;
//两个效果叠加后显示
mEffects[6] = new SumPathEffect(mEffects[2], mEffects[4]) ;

里面的phase代表着相位,可以通过改变它的值来实现动画效果!!!

 mPaint.setStyle(xxx);xxx有STROKE(触点形式,空心的)、FILL(填充形式,实心的)、FILL_AND_STROKE。

      mPaint.setStrokeWidth(int xxx);设置笔触大小。

//不知为什么绘制TextFILL会比STROKE???
mPaintTwo.setStyle(Paint.Style.FILL);
canvas.drawTextOnPath(msg, mPaths[0],-10,20 , mPaintTwo);

canvas.drawPath(mPaths[1], mPaintOne);
canvas.translate(0, 120);
canvas.drawTextOnPath(msg, mPaths[1],-10,20,mPaintTwo);
canvas.translate(0, 120);
canvas.drawPath(mPaths[2],mPaintOne);
canvas.translate(0, 120);
canvas.drawTextOnPath(msg,mPaths[2],-10,20,mPaintTwo);

//画贝塞尔曲线,四个参数分别代表控制点和结束点的x、y坐标,如果没有设置moveTo,则起点默认为(0,0)
path.quadTo();

//重置路径
path.reset();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值