无限滚动的手指绘图应用程序

Finger drawing application with unlimited scroll

我想制作具有垂直滚动且可能无限 space 绘制的手指绘制应用程序。滚动可以是 locked/unlocked.
我知道 2 种方法:

但这两种方式都有缺点:

我想按需使用位图的 window 和 read/write 区域。于是就有了一个问题:如何将write/append位图转换成另一个位图?

例如,我找不到将 200x200px 位图附加到 8000x8000px 位图的合适方法。有没有办法在没有原生库的情况下做到这一点?

或者我完全错了,有更简单的方法来完成我需要做的事情吗?

使用小位图网格,而不将它们附加到更大的位图怎么样?当您的位图之一超出屏幕时,您将其保存到磁盘并销毁它或回收它,有点像 GridView 回收单元格的方式(它重复使用相同的 10 个左右的单元格来显示可能无限的网格细胞)。保存整个绘图意味着将所有位图保存到磁盘。

这种方法的主要问题是当用户滚动浏览视图时从磁盘 save/load 块花费的时间,这可能会导致应用程序短时间冻结,但有一些方法可以使其平滑(例如通过在后台线程中预加载位图)。

在列表中存储触摸点也是完全可能的,有很多方法可以加快绘图部分的速度,例如通过缓存屏幕上的内容并仅绘制用户滚动时丢失的内容。哪一个最好取决于你将在你的视图上绘制什么。