在大画布上绘制,滚动,保存,重新加载......工作,但只保存视口部分

时间:2014-08-01 07:45:00

标签: android bitmap android-canvas

我的程序可以在画布上绘制2D形状。结果可以滚动。 ,当我保存结果时,只保存视口中的图像。

我使用View并在它的画布上绘图。

保存绘图/更新结果为:

setDrawingCacheEnabled(true);  
buildDrawingCache();
Bitmap bmp = Bitmap.createBitmap( this.getDrawingCache());   
setDrawingCacheEnabled( false);    
// the bitmap I can save into a file
bm.compress( Bitmap.CompressFormat.PNG, 90, new FileOutputStream( new File( filepath)));

当我使用大型视图/画布时,我得到的错误是我的drawingCache不够大。当我使用regualar视图/画布大小时,几乎所有视口外的绘图都会被剪裁。

==>我可以在位图上绘制并立即在视图的画布上绘制该位图吗?

那么,在一些绘图之后,初始位图会使用新添加的图形进行更新?

1 个答案:

答案 0 :(得分:0)

令人高兴的是,这个问题有一个简单的解决方案。

  1. 使用您自己的尺寸创建一个大型位图;
  2. 创建自己的cachedCanvas = new Canvas(largeBitmap);
  3. 首先在cachedCanvas'上绘制。
  4. 在onDraw()中执行:canvas.drawBitmap(cachedBitmap,0,0,null);
  5. 保存自己的largeBitmap很简单!