关于 DrawDib 函数

[与此页面关联的功能 DrawDib 是一项旧功能。 它已被 MediaComposition 类取代。 MediaComposition 类已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用 MediaComposition 类 而不是 DrawDib。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

总的来说,DrawDib 函数与 StretchDIBits 函数类似,因为它们提供图像拉伸和抖动功能。 但是,DrawDib 函数支持图像解压缩、数据流式处理和大量显示适配器。

你会发现在某些情况下使用 DrawDib 函数是有益的。 不过, StretchDIBits 比 DrawDib 函数更加多样化,当 DrawDib 函数无法提供所需功能时,应使用。 以下列表描述了决定是使用 DrawDib 函数还是 StretchDIBits 时要考虑的因素。

  • 颜色表信息格式。 DrawDib 函数显示对其颜色表使用 DIB_RGB_COLORS 格式的图像。 如果应用程序中的图像以 DIB_PAL_COLORSDIB_PAL_INDICES 格式存储颜色表信息,则必须使用 StretchDIBits 来显示它们。

  • 传输模式。 DrawDib 函数要求应用程序使用 SRCCOPY 传输模式。 如果应用程序使用除 SRCCOPY 以外的传输模式的 StretchDIBit,则应继续使用 StretchDIBits。 同样,如果需要在应用程序中使用其他光栅操作(例如 XOR),请使用 StretchDIBits

  • 视频和动画播放的质量。 可以将 DrawDib 函数用于数据流式处理应用程序,例如播放视频剪辑和动画序列的应用程序。 DrawDib 的功能优于 StretchDIBits ,因为它们在播放期间提供更高质量的图像并改进运动。

  • 显示适配器。 DrawDib 函数支持的显示适配器数量多于 StretchDIBits 支持的数量。 DrawDib 函数支持使用 4 位图像深度提供 16 色板的 VGA 颜色适配器、使用 8 位图像深度提供 256 色调色板的 SVGA 适配器,以及使用 16 位、24 位和 32 位图像深度提供数千种颜色的真彩色显示适配器。

    DrawDib 函数还提高了在功能更有限的显示适配器上显示图像的速度和质量。 例如,使用 8 位显示适配器时,DrawDib 可有效地将真彩色图像设置为 256 种颜色。 使用 4 位显示适配器时,它们还会抖动 8 位图像。

  • 图像拉伸。 与 StretchDIBits 一样,DrawDib 函数使用源矩形和目标矩形来控制显示的图像部分。 可以通过改变源矩形和目标矩形的位置和大小来裁剪图像中不需要的部分或拉伸图像。 如果显示驱动程序不支持图像拉伸,DrawDib 函数提供的拉伸功能比 StretchDIBits 更高效。

  • 压缩图像。 DrawDib 函数将绘制具有解压缩器的任何格式,包括运行长度编码 (RLE) 、Cinepak 和 411 YUV。 Windows 包括可以选择安装的 RLE 和 Cinepak 解压缩器。

  • Windows 不再支持 Indeo 编解码器。

DrawDib