我对Bitmap类有疑问。如果要在位图上设置很多像素,则可以使用SetPixel方法,但这非常慢。关于如何使用LockBits方法来加速它有很多文档,所以我创建了一个方法:SetFastPixel来加快它的速度。

但是,我对此真的感到困惑:为什么Microsoft不将SetPixel()的实现更改为更快的实现?换句话说,使用SetPixel代替LockBits方法是否有优势?

最佳答案

SetFastPixel可能不起作用的情况:


单色设备(八个像素打包成一个字节)
Planar devices(16色VGA卡的内存布局异常,需要硬件帮助)
索引调色板设备(SetPixel处理RGB到调色板索引的映射)
打印机(我不知道如何通过LockBits来工作)
多显示器配置,其中每张卡具有不同的像素格式


SetPixel旨在处理上述所有问题,但速度较慢。如果您愿意牺牲上述几点,或者愿意在应用程序中处理这些问题,则可以通过LockBits绘制图像。

关于c# - Microsoft为什么不将SetPixel()的实现更改为更快的实现?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4126629/

10-09 19:38