2012-11-05 65 views
0

工作,我需要實現的塗料應用橡皮擦,具有帆布:橡皮擦PorterDuff.Mode.CLEAR不是在畫布

Canvas canvas = new Canvas(bitmap); 

位在哪裏是一個可變的位圖。 我寫具有以下油漆在畫布上:

mPaint = new Paint(); 
mPaint.setAntiAlias(true); 
mPaint.setDither(true); 
mPaint.setColor(0xFF000000); 
mPaint.setStyle(Paint.Style.STROKE); 
mPaint.setStrokeJoin(Paint.Join.ROUND); 
mPaint.setStrokeCap(Paint.Cap.ROUND); 
mPaint.setStrokeWidth(50); 

然後當我要刪除我做到以下幾點:

mPaint.setMaskFilter(null); 
    mPaint.setColor(Color.TRANSPARENT); 
    mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); 

但它不工作。如何在不使用porterDuff模式的情況下執行擦除操作,或者如何更改代碼以使其可以正常工作。

像這樣,它會畫筆,就像筆。但顏色不是黑色,而更多是灰色。

編輯:我嘗試了其他的東西,我將位圖值保存在另一個位圖中,以便當我按下擦除鍵時,我會返回值。這工作,並刪除圖紙,但問題是,在此之後,如果我想繪製的東西,我畫,但它消失。這是因爲位圖與位圖是不一樣的:

Canvas canvas = new Canvas(bitmap); 

回答

0

因此,而不是我添加我的視圖的佈局。我把一個父佈局包含一個佈局和一個圖像視圖。 我把背景圖片放在imageview上。我在兒童佈局上放置了一張透明的照片。然後將孩子的佈局帶到前面,它現在正在工作

+0

我有同樣的問題,你介意分享你的代碼嗎?謝謝 – Chris

+0

好的,這是代碼中最重要的部分,代碼與其中的所有內容相關:http://pastebin.com/6RjnZn7R –