在画布上的Android像素艺术渲染

时间:2012-08-23 15:59:32

标签: android canvas bitmap pixel

我正在制作一款模仿经典游戏的应用。因此,我需要渲染一些像素艺术。

我有一个100x100位图作为缓冲区,我在缓冲区上绘制所有内容没有任何困难。

当我尝试在480x480 Canvas上渲染它时,问题就出现了。

Bitmap.createScaledBitmap会给我一个模糊的位图,所以我使用下面的代码在“块(按比例放大的像素)”之间进行明确切割。

float scale = getWidth() / 100f;
for(int y = 0 ; y < getHeight() ; y++){
    for(int x = 0 ; x < getWidth() ; x++){
        buffer2.setPixel(x, y, buffer.getPixel((int)(x / scale), (int)(y / scale)));
    }
}

代码运行良好,完全符合我的要求。但性能非常差(需要300多毫秒)。所以我写信询问是否有更好的出路。谢谢。

1 个答案:

答案 0 :(得分:1)

我会做一些事情:

  1. getHeight()getWidth()分解为局部变量,以便在循环的每次迭代中都不会调用它。 (例如int height = getHeight(); for(int y = 0; y < height; y++);

  2. 使用中间数组存储像素,然后在循环完成后,使用setPixels()方法而不是setPixel()同时设置所有像素 - 效率明显更高而不是一次设置一个像素。