用WPF绘制一个大的矩形网格



嗨,我正在尝试在WPF中创建一个1000x1000的矩形大阵列,其中阵列中的每个点我都可以使用光标找到索引位置,并单击该位置来修改矩形的颜色。

我需要快速生成数组<0.1s

目前,我正在读取我的into和array,并由此生成位图图像,我相应地缩放和着色,但经过多次尝试,我能生成图像的最快速度约为1s

关于如何更快地完成这项工作,有什么建议吗?要么更快地生成图像,要么可能是生成阵列的更好方法

感谢

我认为你无法在100ms内绘制10^6个矩形。但对于普通显示器来说,这是一个很大的矩形。所以你可能应该考虑一下你到底想做什么

如果你想要一个网格,只需画线,这应该会将绘制调用的数量减少到1000+1000,更易于管理。

如果你想要一个像素对齐的网格,你可以考虑在位图中每隔一行/像素列迭代一次,然后设置颜色。通常使用可写位图来快速访问像素缓冲区。这可能不需要超过个位数的毫秒。在这个级别上操作像素需要熟悉图像的表示方式以及如何转换x/y坐标,即如果使用字节指针,则var startOfPixelIndex = y * stride + x * bytesPerPixel

如果你想给矩形上色,你可能想使用可写位图,并将单个或小矩形的像素设置为你想要的颜色。理想情况下,应避免重新创建或清除整个位图,而应反复更新同一位图。

据我所知,没有方便的方法可以绘制到WriteableBitmap,因此在某些情况下,使用GDI图形对象绘制到常规位图,并将像素复制到Writeable位图可能是有意义的。

最新更新