Надеюсь, кто-то исправит меня, если я ошибаюсь, но я не думаю, что в WPF есть что-то подобное. Но, надеюсь, это один из многих случаев, когда достижения в технологии устарели, когда мы привыкли что-то делать. Например, «как мне заводить мои цифровые часы?»
Насколько я понимаю, причина, по которой ImageCodecInfo.GetImageDecoders () необходима в System.Drawing, связана с хитрой природой System.Drawing: System.Drawing - это управляемая оболочка для GDI +, которая является неуправляемой оболочкой вокруг часть Win32 API. Таким образом, может быть причина, по которой новый кодек будет установлен в Windows, но .NET по сути не знает об этом. И то, что возвращается из GetImageDecoders (), это просто набор строк, которые обычно передаются обратно в System.Drawing / GDI + и используются для поиска и настройки соответствующей DLL для чтения / сохранения вашего изображения.
С другой стороны, в WPF стандартные кодеры и декодеры встроены в каркас, и, если я не ошибаюсь, не зависят от того, что не гарантировано будет установлено как часть фреймворк. Следующие классы наследуются от BitmapEncoder и доступны в стандартной комплектации с WPF: BmpBitmapEncoder, GifBitmapEncoder, JpegBitmapEncoder, PngBitmapEncoder, TiffBitmapEncoder, WmpBitmapEncoder. Существуют BitmapDecoders для всех тех же форматов, плюс IconBitmapDecoder и LateBoundBitmapDecoder.
Возможно, вы имеете дело с делом, которое я не представляю, но мне кажется, что если вам нужно использовать класс, который унаследован от BitmapEncoder, но не включен в WPF, это, вероятно, ваш собственный класс, который вы бы установить с вашим приложением.
Надеюсь, это поможет. Если мне не хватает необходимой части изображения, пожалуйста, дайте мне знать.