Android 图片特效处理:Bipmapshader位图渲染器(CLAMP 、REPEAT 、MIRROR 区别)
来源:互联网 发布:淘宝全屏海报显示不全 编辑:程序博客网 时间:2024/05/17 03:51
(X轴Mirror镜像,Y轴Repeat重复)
本篇博客是承接 Android 图片特效处理:Shader着色器、渲染 博客,对Shader的几种子类做进一步介绍,看下他们的各自的效果。
在上次的博客中根据API可以知道BitmapShader有三种Mode,但是并未给出具体的实例,这里对BitmapShader的三种Mode区别一下,看下他们分别的效果。
一、CLAMP(拉伸)
1、要使用BimapShader我们就需要创建一个BitmapShader(其中有个Bitmap参数,因此还需要一张Bitmap)
mbitmap=BitmapFactory.decodeResource(getResources(), R.drawable.yourimg);BitmapShader mshader=new BitmapShader(mbitmap, TileMode.CLAMP, TileMode.CLAMP);
2、将BitmapShader与Paint进行绑定
mpaint.setShader(mshader);
3、onDraw方法中绘制
mbitmap=BitmapFactory.decodeResource(getResources(), R.drawable.yourimg);
4、小区别:
下面是我们的Bitmap创建时使用的两张图片,一张比较小的,一张比较大的。之前的介绍可以将CLAMP看做是一种拉伸,通过BitmapShader在图片较小的时候,实现的是拉伸图片的右下角的颜色进行填充,就形成了我们看到的第一幅图的样式。
当图片比较大的时候,会选择一部分展示。
二、REPEATE(重复)
使用步骤与BitmapShader的CLAMP相同,只是mode修改一下
BitmapShader mshader=new BitmapShader(mbitmap, TileMode.REPEAT, TileMode.REPEAT);
效果如下图所示:
三、MIRROR (镜像)
BitmapShader mshader=new BitmapShader(mbitmap, TileMode.MIRROR , TileMode.MIRROR );
镜像效果:
学习总结:
通过BitmapShader的几种mode的图片样式的展现,相信你一看就明白了,需要注意一点的就是我们的CLAMP(拉伸),它是根据图片大小进行绘制的。
完整代码:
public class MyBitmapShader extends View{ private int width; private int height; private Paint mpaint; private Bitmap mbitmap; public MyBitmapShader(Context context) { super(context); // TODO Auto-generated constructor stub } public MyBitmapShader(Context context, AttributeSet attrs) { super(context, attrs); mbitmap=BitmapFactory.decodeResource(getResources(), R.drawable.yourimg); mpaint=new Paint(); //X轴Mirror镜像,Y轴Repeat重复效果见本博客最开始的图片展示 BitmapShader mshader=new BitmapShader(mbitmap, TileMode.MIRROR, TileMode.REPEAT); mpaint.setShader(mshader); } @Override protected void onDraw(Canvas canvas) { canvas.drawCircle(200,200, 200, mpaint); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated method stub super.onMeasure(widthMeasureSpec, heightMeasureSpec); width = getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec); height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec); setMeasuredDimension(width, height); }}
0 0
- Android 图片特效处理:Bipmapshader位图渲染器(CLAMP 、REPEAT 、MIRROR 区别)
- Android 图片特效处理:Shader着色器、渲染
- unity TileMode 3参数:clamp、repeat和mirror
- Android 图片处理特效
- Android 图片处理特效
- Android --- 图片的特效处理
- Android --- 图片的特效处理
- Android --- 图片的特效处理
- Android --- 图片的特效处理
- Android --- 图片的特效处理
- Android 图片处理特效集锦
- Android --- 图片的特效处理
- Android --- 图片的特效处理 .
- android图片特效处理之图片叠加
- Android图片特效处理之图片叠加
- android图片特效处理之图片叠加
- android图片特效处理之图片叠加
- android图片特效处理之图片叠加
- CPP-类的位置(Placement of class)
- 内存
- 黑马程序员——ios开发基础之OC中的分类、协议、延展和代理
- android 给view赋值的方法有几种?
- React Native——安装(Setup)
- Android 图片特效处理:Bipmapshader位图渲染器(CLAMP 、REPEAT 、MIRROR 区别)
- Android 图片特效处理:Shader着色器、渲染
- leetcode 268 Missing Number
- C++的类的声明及成员变量和成员函数
- Activiti入门教程二(熟悉数据库设计)
- Linux系统函数write(strlen、sizeof与write结合使用的区别)
- 黑马程序员——ios开发基础之OC中的Foundation框架(一)
- Java基础——switch、循环语句、控制跳转语句
- Android 自定义九宫格控件Gridview用法以及属性