如何“重置”画布(以及用于绘制的位图),以便我可以在画布中绘制新的位图?

时间:2010-07-07 10:54:32

标签: android canvas bitmap

当我尝试加载新地图时,我的loadMap()方法会生成canvas.throwIfRecycled异常。
当我开始游戏时,初始地图加载并正常工作,
它只有当我尝试加载一个新的地图,我得到例外..

我如何“重置”画布和我用来绘制的位图,所以我可以重新开始使用它们?
这是我用来创建和绘制地图的内容:

picDest = Bitmap.createBitmap(width*tileSize, height*tileSize, Bitmap.Config.RGB_565);
canvas = new Canvas(picDest);
for (int y = 0; y < height; y++) {
  for (int x = 0; x < width; x++) {
    // process tile stuffs here ...
    /*
    col = ....:
    row = ....;
    */
    pic[x][y]= Bitmap.createBitmap(sheet, col*tileSize, row*tileSize, tileSize, tileSize);
    canvas.drawBitmap(pic[x][y],x*tileSize,y*tileSize,bitmPaint); 
  }
}
一旦我创建并使用了picDest和canvas,这是基本的 当我想要加载新地图时,我无法想象如何重置所有内容..

TNX

2 个答案:

答案 0 :(得分:0)

如果你调用invalidate();它会重绘(因此重新设置它,并遵循任何新的指示来绘制任何东西)。

答案 1 :(得分:0)

之前我遇到过这样的问题,我通过添加检查器解决了这个问题

 if(this.backgroundImage!=null)

错误增加,因为将绘制的​​位图为空。

Live Wallpaper + bitmap + canvas