文档章节

Android进阶学习-着色器/渲染器

August1996_
 August1996_
发布于 2016/05/22 14:48
字数 370
阅读 14
收藏 0

    Android绘图支持里面有有一个叫做Shader的东西,翻译过来就是叫做着色器,渲染器.作用是用来实现一种渐变,渲染的效果,其实就是填充.

    一共有5种Shader:

    BitmapShader    //位图

    LinearGradient    //线性

    RadialGradient    //光束

    SweepGradient    //梯度

    ComposeGradient    //混合

 

除了BitmapShader之外,其他的真的是产生渐变效果,而BitmapShader则是生成一个图像,类似于Photoshop的图像填充,它的作用是通过Paint对Canvas进行制定的Bitmap填充,填充模式有下面几种:

    CLAMP    //拉伸填充

    REPEAT    //横纵向重复填充

     MIRROR    //横向,纵向不断翻转

 

既然我们可以选择Bitmap去作为图像填充,那么我们可不可以实现这种圆形头像的效果呢?

肯定是可以的,我们可以用Bitmap去填充一个圆,在这篇文章的基础上做修改

修改process函数:

	public void process(View v) {
		Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.jpg);
		BitmapShader mBitmapShader = new BitmapShader(mBitmap, TileMode.CLAMP, TileMode.CLAMP);
		Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
		mPaint.setShader(mBitmapShader);
		
		Bitmap destBitmap = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), Bitmap.Config.ARGB_8888);
		Canvas canvas = new Canvas(destBitmap);
		
		/**
		 * 以上设置BitmapShader到Paint里
		 * 下面就是使用这个填充去画一个圆
		 */
		canvas.drawCircle(mBitmap.getWidth() / 2, mBitmap.getHeight() / 2,
				(Math.min(mBitmap.getWidth(), mBitmap.getHeight())) / 2, mPaint);
		((ImageView)
		
		findViewById(R.id.img)).setImageBitmap(destBitmap);
	}

这是一个应用BitmapShader的小例子,下面的其他几个着色器就等大家动手去做啦.也可以看看这个博客

参考:Canvas使用7行代码自定义圆形头像

© 著作权归作者所有

共有 人打赏支持
August1996_
粉丝 2
博文 51
码字总数 29055
作品 0
湛江
程序员
私信 提问
Android 音视频开发入门指南(2)

GLSurfaceView是OpenGL中的一个类,也是可以预览Camera的,而且在预览Camera上有其独到之处。独到之处在哪?当使用Surfaceview无能为力、痛不欲生时就只有使用GLSurfaceView了,它能够真正做...

shareus
2018/04/23
0
0
【Opengl Android】在安卓上渲染一个obj模型

工具:eclipse 一、获得一个obj文件并分析内容 3D溜溜网 点击打开链接 可以下载到很多模型文件 用3dmax打开 导出外部格式文件obj 即可得到一个obj模型 将格式改为txt 即可看到里面的数据内容...

qq_35263780
2018/04/22
0
0
Android学习笔记进阶16之BitmapShader

<1>简介 具体的看一下博文:Android学习笔记进阶15之Shader渲染 public BitmapShader(Bitmap bitmap,Shader.TileMode tileX,Shader.TileMode tileY) 调用这个方法来产生一个画有一个位图的渲...

迷途d书童
2012/03/05
502
0
Android学习笔记进阶15之Shader渲染

Android提供的Shader类主要是渲染图像以及一些几何图形。 Shader有几个直接子类: BitmapShader : 主要用来渲染图像 LinearGradient :用来进行线性渲染 RadialGradient : 用来进行环形渲染 ...

迷途d书童
2012/03/05
362
0
【GoogleSamples】源码研究 - hello-gl2

简单介绍 hello-gl2项目是用来展示如何用jni的方式来使用OpenGL ES 2.0。所谓JNI的方式,是以Java代码为主,在Java代码中调用C++代码去实现功能。与之相对的,可以以C++代码为主,在C++代码中...

闪电的蓝熊猫
2018/05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

独家解密:阿里超大规模数据中心性能分析

郭健美,阿里巴巴高级技术专家,目前主要从事数据中心的性能分析和软硬件结合的性能优化。CCF 系统软件专委和软件工程专委的委员。曾主持国家自然科学基金面上项目、入选上海市浦江人才计划A...

阿里云云栖社区
15分钟前
0
0
独家解密:阿里大规模数据中心性能分析

郭健美,阿里巴巴高级技术专家,目前主要从事数据中心的性能分析和软硬件结合的性能优化。CCF 系统软件专委和软件工程专委的委员。曾主持国家自然科学基金面上项目、入选上海市浦江人才计划A...

zhaowei121
19分钟前
0
0
mongodb系列~配置文件的优化与处理

mongodb系列~配置文件的优化与处理 一 简介:讲讲如何优化mongo配置文件 二 常规参数 port= //端口 fork=true//守护进程方式启动mongo logpath=shard.log //mongo日志存放路径 journal= tru...

linjin200
20分钟前
0
0
同一台 windows10 设备,安装两个不同版本的mysql

两个mysql 的my.ini文件需要 配置不同的端口。 [mysqld]# 设置3307端口port=3307# 设置mysql的安装目录basedir=F:\\mysql-5.7.24-winx64 # 切记此处一定要用双斜杠\\,单斜杠我这里...

无敌小学僧
21分钟前
0
0
条码插件TBarCode Office系列教程一(Word Add-In篇)

TBarCode Office是一款适用于Microsoft Word 2007、2010和2013的条码插件,通过此插件可以轻松的在您的文档中嵌入代码。此系列教程旨在介绍TBarCode Office的常见问题及解答,帮助大家学习使...

ymy_666666
21分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部