我有一个关于 Bitmap 类的问题。如果你想在位图上设置很多像素,那么你可以使用SetPixel
方法,但是很慢。有很多关于如何使用 LockBits
方法等加速它的文档,所以我创建了一个方法:SetFastPixel
来加速它。
但是,我真的很困惑:为什么微软不将 SetPixel() 的实现更改为更快的实现?换句话说,使用 SetPixel
是否有优势?而不是 LockBits
方法?
最佳答案
SetFastPixel
可能不起作用的情况:
- 单色设备(八个像素打包成一个字节)
- Planar devices (16色VGA卡内存布局奇怪,需要硬件辅助)
- 索引调色板设备(
SetPixel
处理 RGB 到调色板索引映射) - 打印机(我不知道这将如何通过
LockBits
工作) - 多显示器配置,其中每张卡都有不同的像素格式
SetPixel
旨在处理上述所有问题,但代价是速度慢。如果您愿意牺牲上述几点,或者如果您乐于在您的应用程序中处理它们,那么您就可以通过 LockBits
绘制图像。
关于c# - 为什么 Microsoft 不将 SetPixel() 的实现更改为更快的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4126629/