2009-03-02 7 views
5

Я нечеткая связь между компонентом Windows Imaging (WIC) и GDI +. В прошлом я проделал некоторую работу, которая показала, что, например, WIC производит визуально превосходные кодировки GIF, но я удивлен, что я не вижу, чтобы больше людей использовали его для обработки изображений против GDI +. Я знаю, что у него нет операций GDI + для рисования, но для кодирования/декодирования он кажется выше. Так почему мы не видим миграции?Какая связь между WIC и GDI +?

ответ

4

Взаимосвязь (или, скорее, разница между ними) WIC и GDI + заключается в том, что WIC представляет собой расширяемую среду кодирования образов, которая позволяет приложениям, реализующим инфраструктуру, получать поддержку новых форматов изображений через предоставленные кодеки. GDI + является основным компонентом Windows, который поддерживает операции рисования, такие как строки, шрифты, градиенты и т. Д.

Хотя GDI + имеет встроенную поддержку нескольких распространенных форматов изображений, кодеки WIC могут быть предусмотрены для любого формата изображения.

+0

Иначе, чем некоторая нативная кодировка/декодирование, WIC на самом деле ничего не делает, кроме предложения рамки для написания большего количества кода? Для такого превосходного набора родных кодеков (по сравнению с GDI +) вы могли бы подумать, что они обеспечили бы лучший мост между GDI + и WIC. –

+1

Я изучаю это немного больше, и, похоже, это немного больше, чем это. WIC является основой большей части того, что делает WPF (см. Http://blogs.msdn.com/dwayneneed/archive/2008/06/20/implementing-a-custom-bitmapsource.aspx), и действительно, WIC, похоже, управляет пикселями как GDI +. –

0

Я понял, что GDI + использует WIC для выполнения определенных задач. По крайней мере, в Windows 7 это происходит.

Пожалуйста, обратите внимание на следующий код:

image.Write(target, ImageFormat.Gif); 

Когда я запускаю этот код под Windows XP будет использовать кодер GDI + Gif, чтобы записать образ как Gif. Когда я запускаю тот же код под Windows 7, он будет использовать WIC Gif Encoder.

+0

Нет изображения. Запишите (...). Вероятно, вы имеете в виду Image.Save (...) –

 Смежные вопросы

  • Нет связанных вопросов^_^