为什么microsoft不将SetPixel()的实现更改为更快的实现?

Tim*_*sen 2 .net c# pixel bitmap

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

然而,我真的很困惑:为什么微软不会将SetPixel()的实现更改为更快的实现?换句话说,使用SetPixel而不是使用LockBits方法是否有优点?

Tim*_*son 6

情况下SetFastPixel可能无法正常工作:

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

SetPixel旨在处理所有上述问题,但代价是速度慢.如果您愿意牺牲上述某些要点,或者您很乐意在应用程序中处理它们,那么您就可以通过它来绘制图像LockBits.