Поделиться через


Сведения о функциях DrawDib

[Функция, связанная с этой страницей, DrawDib, является устаревшей функцией. Он был заменен классом MediaComposition. класс MediaComposition оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, когда возможно, использовать в новом коде класс MediaComposition вместо DrawDib. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

В совокупности функции DrawDib аналогичны функции StretchDIBits, так как они обеспечивают возможности растягивания изображений и дизеринга. Однако функции DrawDib поддерживают декомпрессию изображений, потоковую передачу данных и большее количество адаптеров отображения.

Вы найдете, что полезно использовать функции DrawDib в некоторых обстоятельствах. Тем не менее, StretchDIBits более разнообразны, чем функции DrawDib, и их следует использовать, если функции DrawDib не могут предоставить нужные функциональные возможности. В следующем списке описываются факторы, которые следует учитывать при выборе того, следует ли использовать функции DrawDib или StretchDIBits.

  • Формат сведений о таблице цветов. Функции DrawDib отображают изображения, использующие формат DIB_RGB_COLORS для их цветовой таблицы. Если изображения в таблице цветов в приложении хранятся в формате DIB_PAL_COLORS или DIB_PAL_INDICES, то для их отображения необходимо использовать StretchDIBits.

  • Режим передачи. Функции DrawDib требуют, чтобы ваше приложение использовало режим передачи SRCCOPY. Если приложение использует StretchDIBits с режимом передачи, отличным от SRCCOPY, следует продолжать использовать StretchDIBits. Аналогичным образом, если необходимо использовать другие операции растра в приложении, например XOR, используйте StretchDIBits.

  • Качество воспроизведения видео и анимации. Функции DrawDib можно использовать для приложений потоковой передачи данных, например для воспроизведения видеоклипов и анимированных последовательностей. Функции DrawDib превосходят StretchDIBits, поскольку они обеспечивают более качественные изображения и улучшают плавность воспроизведения.

  • Видеокарты Функции DrawDib поддерживают большее количество адаптеров отображения, чем поддерживает StretchDIBits. Функции DrawDib поддерживают адаптеры цветов VGA, которые предоставляют 16-цветовые палитры с использованием 4-разрядной глубины изображения, адаптеров SVGA, которые предоставляют 256-цветовую палитру с использованием 8-разрядной глубины изображения и адаптеров отображения true-color, которые предоставляют тысячи цветов с использованием 16-разрядных, 24-разрядных и 32-разрядных глубин изображений.

    Функции DrawDib также повышают скорость и качество отображения изображений на адаптерах отображения с более ограниченными возможностями. Например, при использовании 8-разрядного адаптера отображения функции DrawDib эффективно дитерируют изображения с истинными цветами до 256 цветов. Они также дитерируют 8-разрядные изображения при использовании 4-разрядных адаптеров отображения.

  • Растяжение изображений. Как и StretchDIBits, функции DrawDib используют прямоугольники источника и назначения для управления частью отображаемого изображения. Вы можете обрезать нежелательные части изображения или растянуть изображение, изменив положение и размер прямоугольников источника и назначения. Если драйвер отображения не поддерживает растяжение изображений, функции DrawDib предоставляют более эффективные возможности растяжения, чем StretchDIBits.

  • Сжатые изображения. Функции DrawDib рисуют любой формат, для которого имеется декомпрессор, включая кодировку длины выполнения (RLE), Cinepak и 411 YUV. Windows включает декомпрессоры RLE и Cinepak, которые можно установить при необходимости.

  • Кодек Indeo больше не поддерживается в Windows.

DrawDib