从头开始重绘Canvas的问题

时间:2014-12-19 03:09:57

标签: android canvas

我有一个画布,我做了很多绘画,稍后我想把它设置回原来的,没有潦草的图像。

currentBitmap = BitmapFactory.decodeResource(OCRMain.this.getResources(), R.drawable.ocrnew2, options);
currentBitmap = currentBitmap.copy(Bitmap.Config.ARGB_8888, true);
mainImageToOCR.setImageBitmap(currentBitmap);
mainImageToOCR.setAdjustViewBounds(true);
canvasForDrawingBorderBoxes = new Canvas(currentBitmap);

//Draw on Canvas
//Now, this is what I had tried, but isn't working as desired as the scribbles I draw are staying visible.

canvasForDrawingBorderBoxes = new Canvas(currentBitmap);
mainImageToOCR.invalidate();

将Canvas刷新到未修改视图的正确方法是什么?顺便说一下,这一切都发生在UI线程上。

提前致谢。

编辑:

感谢Mike M,一旦我理解了幕后发生的事情,我就可以修改我的代码。我创建了另一个Bitmap文件tempBitmap,将其设置为currentBitmap的副本,并将ImageView设置为,如下所示:

//At the beginning, before I draw on the Bitmap at all, I use tempBitmap to hold a copy of currentBitmap
tempBitmap = currentBitmap.copy(Bitmap.Config.ARGB_8888, true);

//Do drawing stuff
currentBitmap = tempBitmap;
mainImageToOCR.setImageBitmap(currentBitmap);

一个问题是,由于Bitmap可能是一个大图像,用户只是拍了一张照片,复制它可能会导致内存问题。但它还没有引起任何错误。

1 个答案:

答案 0 :(得分:1)

Bitmap实际上就是你所使用的。 Canvas正是允许您这样做的原因。如果您希望图片恢复原状,请重新加载Bitmap,然后重置ImageViewCanvas