Esperemos que alguien me corrija si me equivoco, pero no creo que haya nada como eso en WPF. Pero esperamos que este sea uno de los muchos casos en que los avances en la tecnología han quedado obsoletos de la manera en que estamos acostumbrados a hacer las cosas. Me gusta "¿cómo enrollo mi reloj digital?"
A mi entender, la razón por la que ImageCodecInfo.GetImageDecoders() es necesario en System.Drawing tiene que ver con la naturaleza kludgy de System.Drawing: System.Drawing es un contenedor administrado alrededor de GDI +, que es un contenedor no administrado alrededor de una parte de la API de Win32. Así que podría haber una razón por la cual un códec nuevo se instalaría en Windows sin que .NET lo supiera inherentemente. Y lo que devuelve GetImageDecoders() es simplemente un conjunto de cadenas que normalmente se pasan a System.Drawing/GDI + y se usan para buscar y configurar el archivo DLL apropiado para leer/guardar su imagen.
Por otro lado, en WPF, los codificadores y decodificadores estándar están integrados en el marco, y, si no me equivoco, no depende de nada que no esté garantizado para ser instalado como parte de el marco. Las siguientes clases heredan de BitmapEncoder y están disponibles de fábrica con WPF: BmpBitmapEncoder, GifBitmapEncoder, JpegBitmapEncoder, PngBitmapEncoder, TiffBitmapEncoder, WmpBitmapEncoder. Hay BitmapDecoders para todos los mismos formatos, además de IconBitmapDecoder y LateBoundBitmapDecoder.
Puede que tenga que lidiar con un caso que no imagino, pero me parece que si tiene que usar una clase que hereda de BitmapEncoder pero no se incluyó con WPF, probablemente sea su propia clase personalizada que instalarías con tu aplicación.
Espero que esto ayude. Si me falta una parte necesaria de la imagen, házmelo saber.
Solo estoy investigando este problema, y te equivocas. La generación de imágenes WPF es lo mismo que System.Drawing: una envoltura administrada para cosas Win32, es decir, WIC (Windows Imaging Component). Ningún codificador/decodificador está integrado en el marco, y creo que nunca lo habrá (razones de rendimiento y reutilización del código, lo tienen todo en Windows). Simplemente olvidaron agregar funcionalidad para listar los formatos :(. – fejesjoco
re: "¿cómo enrollo mi reloj digital?" Ahora hacen relojes digitales que usan su movimiento para cargar la batería. Entonces podrían hacer uno con una bobinadora. :) –