InteropBitmap同步

时间:2011-05-31 08:32:56

标签: c# wpf drawing

WPF InteropBitmap可以从共享内存创建,即

Imaging.CreateBitmapSourceFromMemorySection()

在这种情况下,我们可以更新另一个线程或进程中的共享内存,然后在更新后调用 InteropBitmap.Invalidate()来显示更改。

从WPF源代码中,InteropBitmap只是IWICBitmap的包装器,但它不会公开用于独占写入的IWICBitmap::lock

那么,如何同步WPF InteropBitmap的写入和读取?

  1. 更新发生在用户的主题中。
  2. 读取始终通过IWICBitmapSource::CopyPixels
  3. 在WPF内部渲染线程中进行

    由于

1 个答案:

答案 0 :(得分:-2)

您可以创建一个暴露锁定对象的WrapperClass以及操纵Image的方法。有些工作,但会100%工作

类似的东西:

class InteropBitmapSyncWrapper
{

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

    public InteropBitmap WrappedBitmap
    {
        get;
        set;
    }

    public Object Lock
    {
        get;
        private set;
    }
}