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

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

本文转自:

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

转载于:https://www.cnblogs.com/freeliver54/archive/2012/09/25/2701581.html

你可能感兴趣的文章
k8s架构
查看>>
select 向上弹起
查看>>
mysql 多表管理修改
查看>>
group by order by
查看>>
bzoj 5252: [2018多省省队联测]林克卡特树
查看>>
https 学习笔记三
查看>>
华为“云-管-端”:未来信息服务新架构
查看>>
基于Sentinel实现redis主从自动切换
查看>>
函数(二)
查看>>
oracle中所有存在不存在的用户都可以使用dba连接到数据库
查看>>
函数式编程思想
查看>>
java安全沙箱(二)之.class文件检验器
查看>>
Oracle学习之简单查询
查看>>
log4j配置
查看>>
linux 配置SAN存储-IPSAN
查看>>
双链表
查看>>
java学习笔记之String类
查看>>
pymysql操作mysql
查看>>
Linux服务器删除乱码文件/文件夹的方法
查看>>
牛腩记账本core版本源码
查看>>