虽然 PNG 文件在磁盘上占用 1.2MB,但它会在内存中被解码为 RGB 位图,这会大得多。例如,一个 800x600 像素的 24 位 RGB 位图占用不到 1.4MB 的内存,而压缩为 PNG 时可能只有 30kB。
解决方案是仅渲染您当前可以在屏幕上看到的地图子部分。
为了使这更容易,您可以将源图像分割成恰好是屏幕大小的 1/4 的块。这样可以确保在任何时候加载到内存中的这些较小图像中的数量都不超过 9 个:
+--+----------+--------+
|1 | 2 | 3 |
+--+----------+--------+
| | | |
|4 | 5 | 6 |
| | | |
| | | |
+--+----------+--------+
| | | |
|7 | 8 | 9 |
| | | |
+--+----------+--------+
当图像完全对齐时,您只需要在内存中有 4 个图像。为了在滚动时进行优化,您可以在滚动方向上预取图像。
如果您的地图为 10000x10000 像素,而您的屏幕为 480x800,请将图像的边缘扩展为有一段时间或黑色(或您喜欢的任何背景颜色!)边缘,以便可以均匀分割。在这种情况下,您将使用 10080x10400。