Xfermodes的扩展应用- 图像擦除和还原效果
来源:互联网 发布:莆田广电网络社会招聘 编辑:程序博客网 时间:2024/05/16 17:30
最近在学习Android图形API,看到sdk中demo里的Xfermodes实例,于是结合之前学的做了一个简单的图像擦除和还原的效果,感觉比较好玩,分享下作为TestRoid第一篇^^。
Sdk中自带的例子如图所示,
是几种不同的Xfermodes效果,这些效果很显而易见,无非是一个黄色圆(Dst)和蓝色矩形(Src)的显示。比如SrcOver就是蓝色矩形显示在黄色圆前面; SrcIn就是两个图形交集显示为Src也就是蓝色矩形的那部分。我主要是用里面的Xor效果来实现这里的例子,PorterDuff.Mode.XOR,即两块非透明区域重叠部分显示为透明。
如果单是做图像擦除的效果也就用不到这个东西咯,所以嘛,重点是在还原的效果。因此这个例子的思路是,建立一块与原图大小相同的mask bitmap,然后在这块mask上进行操作,这样就不会影响原图,这里我用了触摸画线的例子在mask上画点东西,然后通过Xermodes中的XOR模式与原图进行合成,得到我们想要看到的效果。是不是有点Photoshop的味道啦,hoho。
原理图在这,随手画的,呵呵
废话不多说直接上效果图(OK,这个是用模拟器截得,有点卡=.=):
下面是一些代码片段:
初始化mask
初始化画笔样式等:
响应触屏消息在mask上画图:
切换擦除(erase)和还原(unerase)功能,只要改变Paint的Xfermode:
在OnDraw中,把原图和mask通过XOR样式画到canvas上,就可以看到擦除的效果啦:
好了,显示上擦除和“反擦”效果就完成了。
例程上传了,可以这里下载:http://download.csdn.net/source/3240693
里面顺便加上了把擦除效果保存下来的,/sdcard/out.png
注:为了视觉效果,例子里加上了一张背景图,让擦除后透明效果明显点。不过保存时这背景图是不会和原图一起保存的。(太懒了。。。)
例子是边学边做的,比较粗糙,欢迎交流,Thx~
- Xfermodes的扩展应用- 图像擦除和还原效果
- Xfermodes的扩展应用- 图像擦除和还原效果
- 基于OpenCV的视频图像组态 (5) :擦除动画效果
- 擦除效果
- 可做刮刮卡的图像擦除插件jQuery eraser
- HTML5 实现橡皮擦的擦除效果
- HTML5 实现橡皮擦的擦除效果
- HTML5 实现橡皮擦的擦除效果
- flash的读写和擦除
- Sql Server的还原和导入数据效果不一样
- 图像滤波函数imfilter函数的应用及其扩展
- 图片擦除-美女效果
- jquery实现擦除效果
- jquery实现擦除效果
- jquery实现擦除效果
- 擦除效果实现
- 图像旋转后的还原图像坐标
- 图像旋转后的还原图像坐标
- 组合模式(Composite Patten)
- 问题集锦(52-53)
- 发现C#中的string.format的一个新用法
- S60:symbian 自定义TabGroup [转]
- 深入分析Flex [Bindable] 以及使用方法
- Xfermodes的扩展应用- 图像擦除和还原效果
- 二叉树操作之三种遍历方法
- Editplus 代码自动完成 代码片段 代码缩写
- 多重继承会带来哪些问题?
- 【代码猴子-培养正确的编程态度和方法】--《编程匠艺》
- 拒绝形式化的软件工程文档
- Struts2_0900_ModelDrivenParamInput 使用ModelDriven接收参数
- 问题集锦(54-55)
- 来自淘宝的架构设计原则