Shader ---着色器,Canvas的drawXXXX这个方法是画具体的形状,画笔的shader定义的就是图形的着色和外观
BitmapShader--位图图像渲染,用BitMap对绘制的图形进行渲染着色,简单来说是用图片对图形进行贴图
圆形头像,放大镜效果
TileMode 拉伸形式
CLAMP --是拉伸最后一个像素铺满
MIRROR ---是横向纵向不足处不断翻转镜像平铺
LinearGradient--线性渲染
霓虹灯文字,倒影图片
SweepGradient----渐变渲染/梯度渲染
雷达扫描效果
RadialGradient----环形渲染
水波纹效果
BitmapShader--位图图像渲染,用BitMap对绘制的图形进行渲染着色,简单来说是用图片对图形进行贴图
圆形头像,放大镜效果
TileMode 拉伸形式
CLAMP --是拉伸最后一个像素铺满
MIRROR ---是横向纵向不足处不断翻转镜像平铺
REPEAT ---类似电脑壁纸,横向纵向不足的重复放置
LinearGradient--线性渲染
霓虹灯文字,倒影图片
SweepGradient----渐变渲染/梯度渲染
雷达扫描效果
RadialGradient----环形渲染
水波纹效果
ComposeShader----组合渲染
/** * 位图图像渲染 BitmapShader用法 * TileMode.CLAMP 拉伸最后一个像素去铺满剩下的地方 * TileMode.MIRROR 通过镜像翻转铺满剩下的地方。 * TileMode.REPEAT 重复图片平铺整个画面(电脑设置壁纸) */ //画个圆形头像 paint.setStrokeWidth(0); paint.setColor(Color.RED); paint.setStyle(Paint.Style.FILL_AND_STROKE); BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.MIRROR, Shader.TileMode.MIRROR); //矩阵可以缩放这个图片 Matrix matrix = new Matrix(); matrix.setScale(0.5f,0.5f); bitmapShader.setLocalMatrix(matrix); paint.setShader(bitmapShader); int dia = bitmap.getWidth() > bitmap.getHeight()? bitmap.getHeight() :bitmap.getWidth(); //直径 canvas.drawCircle(bitmap.getWidth()/2,bitmap.getHeight()/2,dia/2,paint);
/** * 线性渐变 LinearGradient用法 可用于霓虹灯文字,倒影图片 * x0, y0, 起始点 * x1, y1, 结束点 * int[] mColors, 中间依次要出现的几个颜色 * float[] positions,数组大小跟colors数组一样大,中间依次摆放的几个颜色分别放置在那个位置上(参考比例从左往右) * tile */ LinearGradient linearGradient = new LinearGradient(0,0,500,0,mColors,null, Shader.TileMode.REPEAT); paint.setShader(linearGradient); canvas.drawRect(0,0,1200,500,paint); /** * 渐变渲染/梯度渲染 SweepGradient 用于雷达扫描效果 */ SweepGradient sweepGradient = new SweepGradient(500,500,mColors,null); paint.setShader(sweepGradient); canvas.drawCircle(500,500,100,paint); canvas.drawRect(0,0,200,200,paint); /** * 环形渲染 RadialGradient----水波纹效果 */ RadialGradient radialGradient = new RadialGradient(500,500,500,mColors,null, Shader.TileMode.MIRROR); paint.setShader(radialGradient); canvas.drawCircle(500,500,500,paint); /** * 组合渲染 ComposeShader */ ComposeShader composeShader = new ComposeShader(bitmapShader,radialGradient, PorterDuff.Mode.MULTIPLY); paint.setShader(composeShader); canvas.drawRect(0,0,1200,1200,paint);