¿Cuál es la mejor manera de obtener el valor System.Windows.Media.PixelFormats equivalente a System.Drawing.Imaging.PixelFormat?Conversión de GDI + PixelFormat a WPF PixelFormat
Respuesta
Esto es una manera de la conversión, así que vamos a empezar aquí y ver si alguien puede superar este artilugio horrendeous. Se mapean bien entre sí, por lo que escribir las casillas de cambio debería ser bastante fácil.
private static System.Windows.Media.PixelFormat ConvertPixelFormat(System.Drawing.Imaging.PixelFormat sourceFormat)
{
switch (sourceFormat)
{
case System.Drawing.Imaging.PixelFormat.Format24bppRgb:
return PixelFormats.Bgr24;
case System.Drawing.Imaging.PixelFormat.Format32bppArgb:
return PixelFormats.Bgra32;
case System.Drawing.Imaging.PixelFormat.Format32bppRgb:
return PixelFormats.Bgr32;
// .. as many as you need...
}
return new System.Windows.Media.PixelFormat();
}
El tema es muy antiguo, pero así es como trabajé alrededor de este problema, trabajando bajo el supuesto de que ambas enumeraciones tienen todos los mismos valores de Cadena.
private static System.Windows.Media.PixelFormat ConvertPixelFormat (System.Drawing.Imaging.PixelFormat sourceFormat) { System.Windows.Media.PixelFormat pixelFormat = (System.Windows.Media.PixelFormat) Enum.Parse(typeof(System.Windows.Media.PixelFormat), sourceFormat.ToString());
return pixelFormat; }
No creo que esto sea cierto, ya que System.Windows.Media.PixelFormat es una estructura, no una enumeración. – Veggie
Esto es absolutamente incorrecto. Lo único que hace este código es tomar el ** nombre ** del objeto enum de Imaging-PixelFormat e intentará directamente Enum-Parse como un tipo de Media-PixelFormat, esto es imposible: Enum-Parse no funcionará, porque el El tipo pasado en el primer argumento no es un tipo enum. Si eso pudiera funcionar de alguna manera, podría haber funcionado solo al revés, desde Media (struct) hasta Imaginig (enum). Pero, aun así, el nombre de Imaging-PixelFormat es como '" Format32bppArbg "' y el nombre de Media-PixelFormat es como '" Bgra32 "' por lo que ** una conversión como la presentada no es de ninguna manera posible **. – quetzalcoatl
- 1. Confundido acerca de PixelFormat
- 2. .Net constructor de la clase Bitmap (int, int) y (int, int, PixelFormat) lanza ArgumentException en perfecto estado argumentos
- 3. ¿Cómo centro una imagen girada usando GDI +?
- 4. ¿Cómo usar el dibujo GDI + en WPF?
- 5. WinForm conversión Para Wpf
- 6. Formas de TreeNode a la conversión de WPF
- 7. Cómo funciona GDI/GDI + sin OpenGL o DirectX
- 8. ¿Cuál es la diferencia entre GDI y GDI +?
- 9. cómo rellenar degradado para roundrect en gdi puro (no gdi +)
- 10. de Wpf InteropBitmap junto con GDI +: uso intensivo de la CPU
- 11. Conversión de HBITMAP a Jpeg o Png en C++
- 12. ¿Puedo obtener HDC desde la ventana de WPF para poder dibujar con Gdi + API?
- 13. un error genérico en GDI +
- 14. Conversión de control WPF (XAML) en documento XPS
- 15. gdi + Gráficos :: DrawImage realmente lento ~~
- 16. Dibujando muchos rectángulos en GDI +
- 17. GDI + doble búfer en C++
- 18. ¿Cuándo dispone de los recursos de GDI +?
- 19. Operador de conversión frente a operador de conversión: precedencia
- 20. Transparencia al texto en GDI
- 21. Windows GDI: horizontal/vertical DPI
- 22. Cómo obtener objetos GDI asociados a un proceso
- 23. ¿Existe una alternativa más rápida a GDI GetPixel()?
- 24. ¿Tiene GDI + codificadores de imagen estándar CLSID?
- 25. ¿Qué hace el hilo de fondo GDI +?
- 26. Conversión de puntero a miembro
- 27. Conversión de QString a char *
- 28. conversión de QString a char *
- 29. Conversión de cadena a entero
- 30. Conversión de complemento a dos
Thanks. Terminé haciendo algo así. Es complicado asegurarse de que todos los formatos con nombres similares sean realmente equivalentes. – Jem
'System.Drawing.Imaging.PixelFormat.Format16bppArgb1555' no parece tener un equivalente si no he omitido algo. Pero ese formato parece bastante oscuro de todos modos (5 bits RGB cada uno + 1 bit alfa). –
Si algunos no son compatibles, quizás el valor devuelto sea opcional/nulable. La persona que llama debería decidir si lanzar o hacer otra cosa si no se encuentra el formato correspondiente. –