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

1、setShader

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

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

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


Shader可以有以下几种:

bitmapShader         位图平铺

linearGradient         线性渐变

radialGradient         圆形渐变

sweepGradient       角度渐变

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




2、setShadowLayer

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

[java]  view plain copy
  1. 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                把两个其他方法加起来,和上面类似,差别不好描述。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值