Android 色彩渲染(三) Shader颜色渲染

Android 颜色渲染(三) Shader颜色渲染

   相信看过在上一篇中提到的三篇文章后,大家已经对颜色处理方面有更深的体会.   

   之前讲到颜色渐变的效果, 具体怎么做呢,这就需要应用颜色渲染. 首先要介绍Android Api中关于颜色渲染的几个重要的类:

   Shader,BitmapShader,ComposeShader,LinearGradient,RadialGradient,SweepGradient

看一下它们之间的关系:

Android 色彩渲染(三) Shader颜色渲染 


 public class Shader extends Object
该类作为基类主要是返回绘制时颜色的横向跨度。其子类可以作用与Piant。通过 paint.setShader(Shader shader);来实现一些渲染效果。之作用与图形不作用与bitmap。
构造方法为默认的构造方法。 


枚举:
emun Shader.TileMode 


定义了平铺的3种模式:
static final Shader.TileMode CLAMP: 边缘拉伸.


static final Shader.TileMode MIRROR:在水平方向和垂直方向交替景象, 两个相邻图像间没有缝隙.


Static final Shader.TillMode REPETA:在水平方向和垂直方向重复摆放,两个相邻图像间有缝隙缝隙.
 


 
方法:
1. boolean getLoaclMatrix(Matrix localM); 如果shader有一个非本地的矩阵将返回true.
    localM:如果不为null将被设置为shader的本地矩阵.
2. void setLocalMatrix(Matrix localM);

    设置shader的本地矩阵,如果localM为空将重置shader的本地矩阵。 


Shader的直接子类:

BitmapShader    : 位图图像渲染

LinearGradient  : 线性渲染

RadialGradient  : 环形渲染

SweepGradient   : 扫描渐变渲染/梯度渲染

ComposeShader   : 组合渲染,可以和其他几个子类组合起来使用

是不是很像Animation及其子类的关系(AlphaAnimation,RotateAnimation,ScaleAnimation,TranslateAnimation, AnimationSet)

既有具体的渲染效果,也有渲染效果的组合


下面说下Shader的使用步骤:

1. 构建Shader对象

2. 通过Paint的setShader方法设置渲染对象

3.设置渲染对象

4.绘制时使用这个Paint对象





4楼nos198809184天前 11:31
[quote=t12x3456]回复nos19880918n可以结合bitmap进行绘制,这里讲的是Sha...[/quote]n其实我是想说读不通=。=
Re: t12x34564天前 11:33
回复nos19880918n没事,先看基础,到后面看实际应用自然就懂了
3楼lfdfhl4天前 11:25
楼主 这个系列不错!
2楼nos198809184天前 10:18
敬爱的楼主,Paint拼错了。支持你的文章
Re: t12x34564天前 10:49
回复nos19880918n失误,晚上十一点多写的,精神不好哈
1楼nos198809184天前 09:24
之作用与图形不作用与bitmap。nn看不明白呀⊙﹏⊙
Re: t12x34564天前 10:14
回复nos19880918n可以结合bitmap进行绘制,这里讲的是Shader基本用法,后面我会讲结合使用的实例