在讲具体的使用之前补充一点知识,这就是 ProterDuff的由来:

相信大多数人看到这个ProterDuff单词很奇怪了吧,这肿么个意思呢,然后就用有道啊,金山啊开始翻译,但是翻译软件给出的结果肯定还是  ProterDuff或者"未找到".

这是神马情况呢?因为ProterDuff是两个人名的组合: Tomas Proter和 Tom Duff. 他们是最早在SIGGRAPH上提出图形混合概念的大神级人物.有兴趣的童靴们可以自己查下并深入了解,在此不再做过多描述.

利用ProterBuff.Mode我们可以完成任意2D图像测操作, 比如涂鸦画板应用中的橡皮擦效果,绘制各种自定义的进度,等等很强大的效果,下面请看具体的介绍:

Xfermode有三个子类 :

AvoidXfermode  指定了一个颜色和容差,强制Paint避免在它上面绘图(或者只在它上面绘图)。

PixelXorXfermode  当覆盖已有的颜色时,应用一个简单的像素异或操作。

PorterDuffXfermode  这是一个非常强大的转换模式,使用它,可以使用图像合成的16条Porter-Duff规则的任意一条来控制Paint如何与已有的Canvas图像进行交互。

要应用转换模式,可以使用setXferMode方法,如下所示:

  1. AvoidXfermode avoid = new AvoidXfermode(Color.BLUE, 10, AvoidXfermode.Mode. AVOID);    borderPen.setXfermode(avoid); 

    从上面我们可以看到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

    取两图层全部区域,交集部分变为透明色

最新文章

  1. Windows下USB磁盘开发系列二:枚举系统中所有USB设备
  2. img图片放大控件 lightbox.js
  3. html部分---样式表,选择器;
  4. Objective-C开发图书推荐
  5. 【原】lua的table深拷贝
  6. python变量与数据类型
  7. git分支综述
  8. 深入浅出数据结构C语言版(1)——什么是数据结构及算法
  9. django的中英文支持及切换
  10. (转)dubbo远程调用细节
  11. FuelPHP 系列(六) ------ CURD 增删改查
  12. window下mongodb安装和配置
  13. day5_判断价格输入是否是正整数或正小数
  14. JAVA接口传递参数(POST),从接口接收数据(JSON) -----记录
  15. android 按照拼音模糊查询中如何把字符转换成拼音
  16. 绕过Web授权和认证之篡改HTTP请求
  17. Linux下使用Shell过滤重复文本(转)
  18. https原理与实践
  19. Heterogeneity Wins
  20. 面试题17:打印1到最大的n位数

热门文章

  1. java并发编程(四)守护进程 线程阻塞的四种情况
  2. oracle PL/SQL高级特性
  3. dede判断当前文章
  4. Go语言配置与开发环境配置
  5. java 特性
  6. 外部函数test显示的返回内部函数add的调用
  7. RelativeLayout中的格局,自适应宽度布局
  8. openfire使用自定义用户表
  9. utils.js
  10. 转:linux下jar命令与jar包