2012-11-05 64 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 –