2013年4月18日星期四

android畫圖﹠橡皮擦功能實現(說明﹠範例下載)


這幾天為了Android的橡皮擦功能搞死人了,
看了網路上的說明,好像懂又好像不懂(實際上就是不懂),
好不容易跌跌撞撞的把路做出來了,
在這裡幫助後人吧!

1.下載範例吧~

2.把它裝起來使用吧~~

3.這支程式是呼叫照相功能後,直接在上傳畫圖的雛形程式,
所以功能計有:
  1)照相
  2)畫畫
  3)橡皮擦
另外也使用Template Design Pattern的概念,

至於其他功能按了沒有用是正常現象,
要讓它有作用請自己寫,謝謝。

針對橡皮擦功能的程式說明:
1.取得相片的圖並放在PhotoView
2.CanvasView是重疊在PhotoView上
3.CanvasView取得相片時,使用相片的大小,建立一張新的Bitmap,並將它給tempCanvas。

public void setPhoto(Bitmap photo) {
 this.photo = photo;
 tempBitmap=Bitmap.createBitmap(photo.getWidth(),photo.getHeight(),Config.ARGB_8888);
 temptCanvas =new Canvas(tempBitmap);
 temptCanvas.drawColor(Color.TRANSPARENT);
}

4.Override CanvasView的onDraw功能,並用temptCanvas.drawPath,之後再用 canvas.drawBitmap(tempBitmap, 0f,0f, null);,這樣就可以將畫在temptCanvas的圖,用canvas重畫出來了。

@Override
protected void onDraw(Canvas canvas) {
 super.onDraw(canvas);

 for (Pair<Paint, Path> pair : pathArray) {
  if (null != pair.second && !pair.second.isEmpty()) {
  temptCanvas.drawPath(pair.second, pair.first);
  }
 }
 if(null!=tempBitmap){
  canvas.drawBitmap(tempBitmap, 0f,0f, null);
 }
}

5.另外網路上也有人寫了很多了,就是橡皮擦的畫筆設定﹣﹣
rubber.setXfermode(new PorterDuffXfermode(Mode.DST_OUT));

還有看不懂的~~程式碼都給你啦,自己一邊玩去。



没有评论:

发表评论