本文转自:http://blog.csdn.net/awp258/article/details/7967939

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楼提供的思路,谢谢~),省时实力。

更多相关文章

  1. android 圆形进度条的简单实现
  2. android 绘图--简单手写绘图后保存为图片(demo)
  3. Android(安卓)自己画View设置画笔的颜色
  4. Android绘图篇(一)——Canvans基本操作
  5. 【Android应用实例之二】跟随手指的小球——自定义View应用
  6. Android本地验证码的生成
  7. Android(安卓)Canvas绘制直方图
  8. Android(安卓)绘制统计图
  9. Android(安卓)Paint和Color类绘画实例

随机推荐

  1. Android4.0窗口机制token分析以及activit
  2. android如何调用@hide和internal API
  3. Android应用程序UI硬件加速渲染技术简要
  4. Android之Activity生命周期详细介绍,新手
  5. Android应用程序签名详解
  6. Android(安卓)之 IntentFilter 详解
  7. Android执行文件apk的组成结构
  8. Android中怎么打开Wifi的组播功能
  9. Android(安卓)小项目之--SQLite 使用法门
  10. 工作不久的安卓开发者,他们是这样规划自己