android Paint之setXfermode方法
来源:互联网 发布:牛顿迭代法求根c语言 编辑:程序博客网 时间:2024/09/21 09:24
setXfermode(Xfermode xfermode)
该方法用来设置两张图片相交时的模式,系统已经实现的Xfermode子类有以下三个:
1、AvoidXfermode 指定了一个颜色和容差,强制Paint避免在它上面绘图(或者只在它上面绘图)。
2、PixelXorXfermode 当覆盖已有的颜色时,应用一个简单的像素XOR操作。
3、PorterDuffXfermode 这是一个非常强大的转换模式,使用它,可以使用图像合成的16条Porter-Duff规则的任意一条来控制Paint如何与已有的Canvas图像进行交互
我们知道 在正常的情况下,在已有的图像上绘图将会在其上面添加一层新的形状。 如果新的Paint是完全不透明的,那么它将完全遮挡住下面的Paint;
而setXfermode就可以来解决这个问题
一般来说 用法是这样的
- Canvas canvas = new Canvas(bitmap1);
- paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
- canvas.drawBitmap(mask, 0f, 0f, paint);
就是在图片bitmap1上面绘制图片mask时 处理两者相交时候显示的问题
canvas原有的图片 可以理解为背景 就是dst
新画上去的图片 可以理解为前景 就是src
不同Mode的效果图如下:
16条Porter-Duff规则
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
本文转自:http://lipeng88213.iteye.com/blog/1189452
http://www.cnblogs.com/jacktu/archive/2012/01/02/2310326.html
- android Paint之setXfermode方法
- android Paint之setXfermode方法
- android Paint之setXfermode方法
- android Paint之setXfermode方法
- android Paint setXfermode()方法讲解
- android 画图paint之setXfermode
- android.graphics.Paint方法setXfermode (Xfermode x...
- android.graphics.Paint方法setXfermode (Xfermode x...
- android.graphics.Paint方法setXfermode (Xfermode x
- android.graphics.Paint方法setXfermode (Xfermode x...
- android.graphics.Paint方法setXfermode (Xfermode x
- Android Paint之 setXfermode PorterDuffXfermode 讲解
- Android Paint之 setXfermode PorterDuffXfermode 讲解
- Android Paint之 setXfermode PorterDuffXfermode 讲解
- Android Paint之 setXfermode PorterDuffXfermode 讲解
- Paint方法setXfermode
- Paint方法setXfermode
- Paint方法setXfermode
- Delphi IDHTTP用法详解
- PAT练习基础编程题目之求单链表结点的阶乘和
- Java开发注意事项
- 自定义个性化的AlertDialog退出应用对话框
- 设置输入框随字数自动伸缩
- android Paint之setXfermode方法
- PagerSlidingTabStrip视图切换使用心得
- Linux下MySQL快速入门
- java mkdir()和mkdirs()区别
- android handler
- Ckeck(简单照明软件)
- 43个优秀的Swift开源项目推荐
- form builder视图窗口下找不到堆叠视图项
- Python基础教程(一):简介、环境搭建、中文编码