這幾天為了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));
還有看不懂的~~程式碼都給你啦,自己一邊玩去。
没有评论:
发表评论