我想画一个实时更新的图(从右边增长)。我能想到的最有效的方法是复制 x[0 .. width-2] 左边 1 个像素的所有内容,然后在 x[width-1] 处绘制新值。
我对 Android 没有多少经验,但据我所知,Canvas 根本不对其内容进行操作。每次都需要重绘整个屏幕吗?这涉及缩放和平滑,所以我担心它会很慢。
我是否应该绘制一个 byte[][] 然后使用它来绘制到屏幕上(每次都将缓冲区的内容向左移动)?
最佳答案
如果您的图形是有界的,请尝试将其全部渲染到一个图像中,然后将相关部分从该图像传输到您的 Canvas 中。尽量避免实际“移动”缓冲区中的像素,因为这可能会在您的读写之间引入依赖关系,并可能真正降低性能。从一个缓冲区复制到另一个缓冲区并交替将哪个缓冲区传送到屏幕实际上可能更好。最后,如果您最终不得不手动处理像素,请确保以行而不是列的形式在图像上运行,并且您从行的开头开始以帮助缓存。
关于Android:有效地滚动 Canvas 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/930402/