您的位置:首页 > 移动开发 > Android开发

Android学习使用PorterDuff.Mode

2017-07-28 18:29 239 查看
当用到canvas画图且有2层及以上的图层时,往往会用到PorterDuff.Mode,怎么使用的呢?

mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

先来看下PorterDuffXfermode这个类,PorterDuff查词典是没这个名字的,看了大神的文章才知道原来这个是Tomas Proter
Tom Duff名字组合,在SDK中Xfermode有三个子类:AvoidXfermode, PixelXorXfermode和PorterDuffXfermode,前两个类在API 16被遗弃了。

PorterDuff.Mode这个枚举总共有18种,如图:



下图大概比较简易的描述了这些mode的作用,



从上面我们可以看到PorterDuff.Mode为枚举类,一共有18个枚举值:

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

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

17.PorterDuff.Mode.ADD

  取两图层全部区域,饱和度叠加

18.PorterDuff.Mode.OVERLAY

今天又进步了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息