Android 颜色渲染(九) PorterDuff及Xfermode详解
来源:互联网 发布:和msqrd差不多的软件 编辑:程序博客网 时间:2024/06/08 05:30
转自:http://blog.csdn.net/t12x3456/article/details/10432935
Android 颜色渲染(九) PorterDuff及Xfermode详解
之前已经讲过了除ComposeShader之外Shader的全部子类, 在讲ComposeShader(组合渲染)之前, 由于构造ComposeShader需要 PorterDuffXfermode或者PorterDuff.Mode作为参数,所以在此先详细地了解下这两个类的作用,这对之后的绘图会有很大的帮助:
在讲具体的使用之前补充一点知识,这就是 ProterDuff的由来:
相信大多数人看到这个ProterDuff单词很奇怪了吧,这肿么个意思呢,然后就用有道啊,金山啊开始翻译,但是翻译软件给出的结果肯定还是 ProterDuff或者"未找到".
利用ProterBuff.Mode我们可以完成任意2D图像测操作, 比如涂鸦画板应用中的橡皮擦效果,绘制各种自定义的进度,等等很强大的效果,下面请看具体的介绍:
1. Xfermode:
Xfermode有三个子类 :
AvoidXfermode 指定了一个颜色和容差,强制Paint避免在它上面绘图(或者只在它上面绘图)。
PixelXorXfermode 当覆盖已有的颜色时,应用一个简单的像素异或操作。
PorterDuffXfermode 这是一个非常强大的转换模式,使用它,可以使用图像合成的16条Porter-Duff规则的任意一条来控制Paint如何与已有的Canvas图像进行交互。
要应用转换模式,可以使用setXferMode方法,如下所示:
- AvoidXfermode avoid = new AvoidXfermode(Color.BLUE, 10, AvoidXfermode.Mode. AVOID); borderPen.setXfermode(avoid);
2.PorterDuff:
首先看一下效果图(来自ApiDemos/Graphics/XferModes)
从上面我们可以看到PorterDuff.Mode为枚举类,一共有16个枚举值:
1.PorterDuff.Mode.CLEAR
所绘制不会提交到画布上。
2.PorterDuff.Mode.SRC
显示上层绘制图片
3.PorterDuff.Mode.DST
显示下层绘制图片
4.PorterDuff.Mode.SRC_OVER
正常绘制显示,上下层绘制叠盖。
5.PorterDuff.Mode.DST_OVER
上下层都显示。下层居上显示。
6.PorterDuff.Mode.SRC_IN
取两层绘制交集。显示上层。
7.PorterDuff.Mode.DST_IN
取两层绘制交集。显示下层。
8.PorterDuff.Mode.SRC_OUT
取上层绘制非交集部分。
9.PorterDuff.Mode.DST_OUT
取下层绘制非交集部分。
10.PorterDuff.Mode.SRC_ATOP
取下层非交集部分与上层交集部分
11.PorterDuff.Mode.DST_ATOP
取上层非交集部分与下层交集部分
12.PorterDuff.Mode.XOR
异或:去除两图层交集部分
13.PorterDuff.Mode.DARKEN
取两图层全部区域,交集部分颜色加深
14.PorterDuff.Mode.LIGHTEN
取两图层全部,点亮交集部分颜色
15.PorterDuff.Mode.MULTIPLY
取两图层交集部分叠加后颜色
16.PorterDuff.Mode.SCREEN
取两图层全部区域,交集部分变为透明色
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- Android 颜色渲染 PorterDuff及Xfermode详解
- Android 颜色渲染 PorterDuff及Xfermode详解
- CSDN-markdown编辑器 快捷键
- Spring框架的基本概念
- Hexo-免费个人博客搭建框架使用
- Go计算运行的时间
- uva1423 拓扑排序
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- 安卓Eclipse环境搭建
- Java中HashMap遍历的两种方式
- MySql BlackHole存储引擎
- Android Launcher开发(四)Launcher概述及简单添加和删除应用程序的快捷方式
- windows远程桌面_保存密码
- andbase学习笔记一
- Android 颜色渲染(十) ComposeShader组合渲染
- WAMP配置php.ini去掉警告信息(NOTICE)的方法详解