PorterDuff.Mode 效果

来源:互联网 发布:网络销售的渠道 编辑:程序博客网 时间:2024/05/22 17:34

1、概念

当在画布上画两个图像时,会出现交叉,覆盖,对交集区处理,要用到
其中第一个图像叫 Source image
第二个图像叫 Destination image

2、图例解释

两个描绘图像:Source 与 Destination
这里写图片描述

几种模式:
这里写图片描述

3、代码实现

//谷歌官方例子 Paint paint = new Paint(); canvas.drawBitmap(destinationImage, 0, 0, paint); PorterDuff.Mode mode = // choose a mode paint.setXfermode(new PorterDuffXfermode(mode)); canvas.drawBitmap(sourceImage, 0, 0, paint);
//实际要加上这句,否则无效(主要想阐述的是这个) if (android.os.Build.VERSION.SDK_INT >= 11) {            setLayerType(View.LAYER_TYPE_SOFTWARE, null);        }

4、模式简单解释描述

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
上下层都显示。

5、引用

[https://developer.android.com/reference/android/graphics/PorterDuff.Mode.html]
[http://blog.csdn.net/q445697127/article/details/7867529]

原创粉丝点击