65.9K
CodeProject 正在变化。 阅读更多。
Home

FastPixel - 比 Bitmap.SetPixel 快得多的替代方案

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.14/5 (22投票s)

2006年8月16日

CPOL
viewsIcon

117709

downloadIcon

3048

你是否想要比 SetPixel 更快的东西?那么你找到了。

Sample Image - screenShot.jpg

引言

我最近一直在处理一些图形代码,并且对 SetPixel 及其性能开销感到非常恼火。不过,还有另一种方法:锁定位图并直接与字节数组交互,每个字节代表 R、G 或 B(有时也代表 A,具体取决于它是否是 alpha 位图)。

用法

Dim fp As New FastPixel(image)
fp.Lock()
fp.SetPixel(x, y, Color.Green)
fp.Unlock(True)

我学到的东西

  • 在密集操作中使用 Bitmap.WidthBitmap.Height 非常慢,因为会使用 GdipGetImageWidth(或 GdipGetImageHeight)来检索值,并且该值不会被缓存。
  • 使用这个类,平均而言,速度比使用 SetPixel 快 20 多倍。

结论

使用这个类吧!

抱歉这篇文章篇幅较长,但没有太多需要解释的。它非常基础,我只是想把它发布出来供人们使用:>

© . All rights reserved.