我正在编写Android应用程序。我正在使用Canvas,我正在使用for循环绘制Tilemap并逐个绘制每个tile。
我希望通过渲染此tilemap(前景和背景个体)一次并保存它来提高性能,这样我就可以绘制整个地图而不会循环抛出每个单独的图块。
我的图形类看起来像这样:
public class AGraphics implements Graphics {
Bitmap frameBuffer;
Canvas canvas;
Paint paint;
...
public AGraphics(.., Bitmap frameBuffer) {
this.frameBuffer = frameBuffer;
this.canvas = new Canvas(frameBuffer);
this.paint = new Paint();
}
...
public void drawPixmap(...){
canvas.drawBitmap(((AndroidPixmap) pixmap).bitmap, ... );
}
...
}
My World Class调用绘制Pixmap函数绘制每个图块:
public class World {
...
public void drawForeground (float posX, float posY){
// get Graphics ...
for (int y = 0; y < map.height; y++) {
for (int x = 0; x <map.width; x ++) {
// calculate Positions
g.draw(tileset, (int)posX, (int)posY, srcX, srcY, tilesize, tilesize);
}
}
}
...
}
现在我正在寻找一种方法来保存Canvas并在每个GameLoop重绘不同位置以提高性能。
任何想法或最佳做法?如果您需要更多信息,请询问!
由于
答案 0 :(得分:0)
使用Bitmap.createBitmap
创建位图(一个或多个您需要的位图)
使用Canvas canvas = new Canvas(bitmap)
在该位图上创建画布
画入画布
onDraw
中的,使用canvas.drawBitmap