当在画布上画两个图像时,会出现交叉,覆盖,对交集区处理,要用到
其中第一个图像叫 Source image
第二个图像叫 Destination image
//谷歌官方例子
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);
}
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
上下层都显示。
[https://developer.android.com/reference/android/graphics/PorterDuff.Mode.html]
[http://blog.csdn.net/q445697127/article/details/7867529]