canvas相关(渐变、阴影、path)

1、setShader


Paint对象的setShader函数,我的感觉是设置一种方式来填充图形。


可以设置为渐变,代码如下:


[java] view plaincopy
Paint paint=new Paint();  //定义一个Paint  
Shader mShader = new LinearGradient(0,0,40,60,new int[] {Color.RED,Color.GREEN,Color.BLUE},null,Shader.TileMode.REPEAT);    
//新建一个线性渐变,前两个参数是渐变开始的点坐标,第三四个参数是渐变结束的点的坐标。连接这2个点就拉出一条渐变线了,玩过PS的都懂。然后那个数组是渐变的颜色。下一个参数是渐变颜色的分布,如果为空,每个颜色就是均匀分布的。最后是模式,这里设置的是循环渐变  
  
paint.setShader(mShader);  


Shader可以有以下几种:


bitmapShader         位图平铺


linearGradient         线性渐变


radialGradient         圆形渐变


sweepGradient       角度渐变


composeShader    组合效果(组合以上几种)








2、setShadowLayer
设置了这个之后,再画出来的图形后面,会有一个阴影


[java] view plaincopy
paint.setShaderLayer(15,10,10,Color.GRAY);  //第一个参数是阴影扩散半径,紧接着的2个参数是阴影在X和Y方向的偏移量,最后一个参数是颜色  


但是这里有个问题,在画bitmap的时候,如果设置了shadowLayer,画出来的图形并不会有阴影,而是2个bitmap叠加在一起。也就是说,他的阴影层也和他本身一样。根据分析,因该是bitmap也被设置成了阴影层。暂时还没找到比较好的在图下面添加阴影的办法。












3、Path的6种效果


CornerPathEffect              在路径的转折处是圆角,构造参数为圆角半径




DiscretePathEffect           不规则的锯齿线(类似心电图)


构造参数:


    第一个是小三角的开口宽度(心电图每个波之间的宽度)


    一个是偏移量(心电图高度)




DashPathEffect                 虚线


构造参数:


    第一个是一个数组,数组长度必须>=2,数组的值定义了宽度,比如 {20,10,5,10},意思就是第一个实线段长20,他后面的空白长10,然后又是一个长5的实线段,然后是长度10的空白。


    第二个参数说是偏移量,没发现具体作用




PathDashPathEffect        类似上面一个,不过是由path图形组成的线段(如由三角形组成的线段,正方形组成的线段)。


构造参数:


    第一个参数是一个path,由他定义图形。


    第二个是间距


    第三个和上面一样   


    第四个是变换方式,有PathDashPathEffect.Style.TRANSLATE,ROTATE,MORPH三种。第一个就是直接把图形摆出路径,第二个会依据路径旋转,第三个是依据路径自动变形




ComposePathEffect       把两个上面其他的方式组合起来
构造参数:


    第一个是一个effect


    第二个还是一个effect




SumPathEffect                把两个其他方法加起来,和上面类似,差别不好描述。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值