c# - 为什么 Microsoft 不将 SetPixel() 的实现更改为更快的实现?

标签 c# .net bitmap pixel

我有一个关于 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/

相关文章:

C#将文本添加到文本文件而不重写它?

c# - ASP.NET Core - 同时使用 UseDeveloperExceptionPage() 和自定义日志记录

.net - 如何动态刷新 .NET 数据绑定(bind)转发器控件

.net - 如何防止 .Net 中的正则表达式挂起(或为其设置超时)

c# - 解码百分比编码的字符串 c# .net

vb.net - 将位图对象传递给需要位图文件的文件名字符串的 Interop Word 函数

c# - 位图图像的“每样本位数”、“每像素样本数”和“每像素字节数”之间有什么区别?

c# - DataGridAutoGeneratingColumnEventArgs.PropertyDescriptor 是什么类型的?

c# - BeginInvoke 未在 WPF 应用程序的线程内触发

android - ListView 中的位图 : Loading slowly