【问题标题】:how can i "reset" the canvas (and the bitmap used to draw into) so i can draw a new bitmap into the canvas?我如何“重置”画布(以及用于绘制的位图),以便在画布中绘制新的位图?
【发布时间】:2010-07-07 10:54:32
【问题描述】:

当我尝试加载新地图时,我的 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 和画布,
当我想加载新地图时,我不知道如何重置它..

tnx

【问题讨论】:

    标签: android canvas bitmap


    【解决方案1】:

    如果你调用 invalidate();它会重新绘制(因此重置它,并按照任何新的说明绘制任何内容)。

    【讨论】:

      【解决方案2】:

      我以前遇到过这种问题,我通过添加检查器解决了它

       if(this.backgroundImage!=null)
      

      错误上升是因为要绘制的位图为空。

      来源 Live Wallpaper + bitmap + canvas

      【讨论】:

        猜你喜欢
        • 2018-01-06
        • 1970-01-01
        • 2012-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-07
        • 1970-01-01
        • 2015-11-03
        相关资源
        最近更新 更多