当用到canvas画图且有2层及以上的图层时,往往会用到PorterDuff.Mode,怎么使用的呢?

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

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

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

Android学习使用PorterDuff.Mode

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

Android学习使用PorterDuff.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

今天又进步了Android学习使用PorterDuff.Mode

相关文章:

  • 2021-06-19
  • 2021-12-24
  • 2021-09-25
  • 2022-01-23
  • 2021-11-12
  • 2022-12-23
  • 2022-12-23
  • 2021-10-14
猜你喜欢
  • 2021-11-12
  • 2022-01-04
  • 2022-12-23
  • 2022-01-08
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案