天天看点

Android 图片特效处理:Shader着色器、渲染

 在绘图中还有一种比较重要的可以设置画笔风格的属性叫做Shader,Shader被称为着色器或是渲染。      

一、Shader简介

Shader被称为着色器或是渲染,Shader有几个直接子类:

BitmapShader : 主要用来渲染图像

LinearGradient :用来进行线性渲染

RadialGradient : 用来进行环形渲染

SweepGradient : 扫描渐变—围绕一个中心点扫描渐变就像电影里那种雷达扫描,用来梯度渲染。

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

二、分类介绍

首先我们根据API来看一下上面四种不同的子类的渲染效果

1、BitmapShader (位图着色器)

BitmapShader(Bitmap bitmap, Shader.TileMode tileX, Shader.TileMode      

参数介绍:Bitmap (位图)后面两个分别是X轴与Y轴的Mode形式

下面是Bipmapshader的三种Mode形式

Android 图片特效处理:Shader着色器、渲染

CLAMP:如果渲染器超出原始边界范围,将复制边缘进行渲染(实际上是右下角的颜色)

MIRROR:横向和纵向的重复渲染器图片,交替镜像,即使图片不是很衔接。

REPEAT:横向和纵向的重复渲染器图片,平铺。

2、LinearGradient (线性渐变)

Android 图片特效处理:Shader着色器、渲染

参数介绍:

Android 图片特效处理:Shader着色器、渲染

x0/x1:线性渐变的起始(停止)X坐标

Y0/y1:线性渐变的起始(停止)X坐标

color0/color1:线性渐变的起始(停止)的颜色

title:模式就是我们BitmapShader中介绍的三种mode(CLAMP、MIRROR、REPEAT)

3、RadialGradient (环型渐变)

Android 图片特效处理:Shader着色器、渲染

参数介绍:

Android 图片特效处理:Shader着色器、渲染

centerX/Y:着色器开始渐变的中心坐标

radius:半径

centercolor:中心颜色

edagecolor:边缘颜色

tilemode:BitmapShader中的三种mode相同

4、SweepGradient (扫描渐变)

SweepGradient 颜色渐变方向非环形,而是以某点为圆心呈扇形扫过。

Android 图片特效处理:Shader着色器、渲染

参数介绍:

Android 图片特效处理:Shader着色器、渲染

cx,cy :着色器开始渐变的中心坐标,

color1,color0 或 colors: 指定渐变的颜色 ,对于使用多于两种颜色时,还可以通过positions 指定每种颜色的相对位置,positions 设为NULL时表示颜色均匀分布。

5、ComposeShader(组合渐变)

Android 图片特效处理:Shader着色器、渲染

参数介绍:

Parameters

shaderA The colors from this shader are seen as the “dst” by the mode(画笔Xfermode的风格是dst模式则渲染器的颜色将为dst遮罩层)

shaderB The colors from this shader are seen as the “src” by the mode(画笔Xfermode的风格是src模式则渲染器的颜色将为Src层)

继续阅读