2012-06-11 10 views
5

Necesito realizar varias operaciones en una imagen, por ejemplo, necesito cambiar el tamaño de la imagen, tal vez rellenarla para mantener la relación de aspecto (y dibujar un color de fondo) y sello condicional con una marca de agua.Qué tipo de imagen WPF debo usar para realizar transformaciones múltiples

Actualmente estoy usando BitmapFrame como el tipo que paso entre los métodos implicados.

¿Alguien puede recomendar otro tipo que deba usar para realizar actualizaciones incrementales en las imágenes?

Posiblemente podría crear una composición de varias imágenes, aunque no estoy seguro de qué tipos debo usar para esto?

+0

Solo necesita mostrar el resultado, o necesita realizar otras acciones en él también (por ejemplo, guardar, enviar, ...). –

Respuesta

9

WriteableBitmap es adecuado cuando desea realizar actualizaciones incrementales de la imagen. Tanto BitmapFrame como WriteableBitmap heredan de BitmapSource, y WriteableBitmap se pueden crear instancias usando cualquier BitmapSource.

Es posible que también desee echar un vistazo a la biblioteca WriteableBitmapEx que proporciona una gran cantidad de métodos de extensión eficaces WriteableBitmap para la manipulación de mapas de bits. Esta biblioteca es aplicable a las aplicaciones de WPF, así como a Silverlight, WP7 y Metro.

6

Trate WriteableBitmap

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap.aspx

Utilice la clase WriteableBitmap para actualizar y hacer un mapa de bits en función de cada fotograma. Esto es útil para generar contenido algorítmico, como una imagen fractal, y para la visualización de datos, como un visualizador de música.

Para un mayor control de las actualizaciones y para el acceso de subprocesos múltiples en el búfer posterior, utilice el siguiente flujo de trabajo.

1. Llame al método de bloqueo para reservar el búfer posterior para las actualizaciones.

2. Obtenga un puntero al búfer posterior accediendo a la propiedad BackBuffer.

3. Escribir cambios en el búfer posterior. Otros hilos pueden escribir cambios en el búfer posterior cuando el WriteableBitmap está bloqueado.

4. Llame al método AddDirtyRect para indicar las áreas que han cambiado.

5. Llame al método Desbloquear para liberar el búfer posterior y permitir la presentación en la pantalla.

Cuando las actualizaciones se envían al subproceso de representación, el subproceso de representación copia los rectángulos cambiados desde el búfer posterior al búfer frontal. El sistema de renderizado controla este intercambio para evitar interbloqueos y volver a dibujar artefactos, como "rasgado".

Cuestiones relacionadas