我有一个画布,我做了很多绘画,稍后我想把它设置回原来的,没有潦草的图像。
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可能是一个大图像,用户只是拍了一张照片,复制它可能会导致内存问题。但它还没有引起任何错误。
答案 0 :(得分:1)
Bitmap
实际上就是你所使用的。 Canvas
正是允许您这样做的原因。如果您希望图片恢复原状,请重新加载Bitmap
,然后重置ImageView
和Canvas
。