FastPixel - 比 Bitmap.SetPixel 快得多的替代方案
你是否想要比 SetPixel 更快的东西?那么你找到了。
引言
我最近一直在处理一些图形代码,并且对 SetPixel
及其性能开销感到非常恼火。不过,还有另一种方法:锁定位图并直接与字节数组交互,每个字节代表 R、G 或 B(有时也代表 A,具体取决于它是否是 alpha 位图)。
用法
Dim fp As New FastPixel(image)
fp.Lock()
fp.SetPixel(x, y, Color.Green)
fp.Unlock(True)
我学到的东西
- 在密集操作中使用
Bitmap.Width
或Bitmap.Height
非常慢,因为会使用GdipGetImageWidth
(或GdipGetImageHeight
)来检索值,并且该值不会被缓存。 - 使用这个类,平均而言,速度比使用
SetPixel
快 20 多倍。
结论
使用这个类吧!
抱歉这篇文章篇幅较长,但没有太多需要解释的。它非常基础,我只是想把它发布出来供人们使用:>