2011-05-31 8 views
5

WPF InteropBitmap puede ser creado a partir de la memoria compartida, es decir,InteropBitmap sincronización

Imaging.CreateBitmapSourceFromMemorySection() 

En este caso, podemos actualizar la memoria compartida en otro hilo o proceso, y luego después de la actualización, llamando InteropBitmap.Invalidate() para presentar los cambios.

Desde el código fuente de WPF, InteropBitmap es solo un contenedor de IWICBitmap, pero no expone IWICBitmap::lock que se utiliza para la escritura exclusiva.

Entonces, ¿cómo sincronizo la escritura y la lectura de WPF Interopitmap?

  1. La actualización se produce en el hilo del usuario.
  2. La lectura siempre se produce en WPF interna render hilo a través de IWICBitmapSource::CopyPixels

Gracias

Respuesta

-2

Puede crear una WrapperClass la que expone un objeto de bloqueo y los métodos para manipular la imagen. Es un poco de trabajo, pero funcionaría 100%

algo como:

class InteropBitmapSyncWrapper 
{ 

    public InteropBitmapSyncWrapper(InteropBitmap wrappedBitmap) 
    { 
     WrappedBitmap = wrappedBitmap; 
     this.Lock = new Object(); 
    } 

    public InteropBitmap WrappedBitmap 
    { 
     get; 
     set; 
    } 

    public Object Lock 
    { 
     get; 
     private set; 
    } 
} 
+0

usted no entiende mi pregunta. ver mi actualización – Chang