博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[转]android 简单的画图操作
阅读量:6677 次
发布时间:2019-06-25

本文共 1145 字,大约阅读时间需要 3 分钟。

本文转自:

1.将背景图片在屏幕的canvas画布上先画好,例如canvas.drawBitmap(bgBitmap,0,0,null);

2.新建一个Bitmap,例如Bitmap tempBitmap=Bitmap.createBitmap(100,100,Config.ARGB_4444);并以此Bitmap新建一个临时画布canvas例如:Canvas temptCanvas=new Canvas(tempBitmap);然后再执行一步把tempBitmap的背景色画成透明的temptCanvas.drawColor(Color.TRANSPARENT);这样做的目的是把新建的那个临时画布的目标定位在哪个tempBitmap上,这样做以后,调用temptCanvas的一切draw函数,都会把相应的图像画在临时的tempBitmap上,而不是
在原先的屏幕上。
3.临时画布temptCanvas和临时Bitmap建好后,下面就是开始绘画了,要注意的是现在的画点,画线什么的都是调用temptCanvas而不是原先屏幕上的canvas,比如应该是temptCanvas.drawPoint ,temptCanvasRect, temptCanvas.drawLine等等,如果现在要画橡皮的痕迹,那么先要设置画笔的颜色mPaint.setColor(Color.BLACK);这里只要不设置成Color.TRANSPARENT透明色就行,颜色任意;再设置画笔的模式paint.setXfermode(new PorterDuffXfermode(Mode.DST_OUT));这一步非常重要,它的作用是用此画笔后,画笔划过的痕迹就变成透明色了。画笔设置好了后,就可以调用该画笔进行橡皮痕迹的绘制了,例如temptCanvas.drawPath(eraPath,mPaint);
4.在所有的画笔痕迹和橡皮痕迹绘制完成后,执行最后一步,canvas.drawBitmap(tempBitmap,0,0,null);这里要注意的是canvas而不是temptCanvas了!temptCanvas负责的是将各种画笔痕迹画在tempBitmap上,而canvas负责将tempBitmap绘制到屏幕上。
这样就完成了橡皮功能了!总的思路就是,先在屏幕上绘制出来,其余的各种画笔痕迹(包括橡皮痕迹)统统绘制在一个临时的Bitmap上,至于橡皮则使用Mode.DST_OUT模式,将橡皮痕迹处Bitmap设置为透明。然后再将这个临时的Bitmap绘制在屏幕上,这样透明的地方就会显示出背景图片了,完成橡皮效果,这个有点类似PS里的图层思想(在此感谢3楼提供的思路,谢谢~),省时实力。
Screenshot-5554:myAVD.png

转载地址:http://yjyao.baihongyu.com/

你可能感兴趣的文章
LNMP 搭建管理后台中心 遇到的问题和解决思路!
查看>>
利用promise写出更加优美的nodejs程序
查看>>
使用JS替换URL中的指定参数
查看>>
size(指针)代码题
查看>>
XEN 4.1.0 PVOPS设置和启动中遇到的一些问题
查看>>
我的友情链接
查看>>
5分钟内搞定 Tomcat 的 SSL 配置(Windows Platform)【转】
查看>>
观《太空旅客》有感
查看>>
使用 Git-Analyze 玩转 Git
查看>>
Spring + SpringMVC + Mybatis + Shiro 整合(上)
查看>>
Linux 下日志管理工具(rotatelogs/logrotate/cronolog)
查看>>
ScalaMP ---- 模仿 OpenMp 的一个简单并行计算框架
查看>>
Excel常用函数公式小结
查看>>
ctags2.2 无-R参数选项且 不能递归生成索引文件
查看>>
flex 动态画线
查看>>
linux下导入、导出mysql数据库命令
查看>>
linux bonding配置(一)
查看>>
KeyMob-移动广告聚合平台-安卓、苹果应用推广
查看>>
【华为OJ】201301 JAVA 题目0-1级 将数组分为相等的两组
查看>>
WKT
查看>>