C# 设置图像源后更新可写位图

C# 设置图像源后更新可写位图,c#,wpf,writablebitmap,C#,Wpf,Writablebitmap,我正试图使用writeablebitmap对位图图像进行像素级操作。但我无法使其正常工作。我要做的是在我为位图分配Image.Source属性后,对writeablebitmap的像素数据进行操作。我在谷歌上搜索了一下,找到的唯一结果是调用bitmap.Invalidate()方法,但它似乎已被弃用,因为我在WritableBitmap类中找不到该方法。以下是我用于更新图像的代码,但运气不佳: wbitmap.Lock(); wbitmap.WritePixels(rect, p

我正试图使用
writeablebitmap
对位图图像进行像素级操作。但我无法使其正常工作。我要做的是在我为位图分配
Image.Source
属性后,对
writeablebitmap
的像素数据进行操作。我在谷歌上搜索了一下,找到的唯一结果是调用
bitmap.Invalidate()
方法,但它似乎已被弃用,因为我在
WritableBitmap
类中找不到该方法。以下是我用于更新图像的代码,但运气不佳:

    wbitmap.Lock();
    wbitmap.WritePixels(rect, pixels, stride, 0);
    wbitmap.AddDirtyRect(new Int32Rect(0, 0, width, height));
    wbitmap.Unlock();

    //given that i've already assigned image.Source with "wbitmap"
    image.InvalidateVisual();
有什么想法吗

编辑


如果有人建议在WPF中使用快速2D绘图的其他方法,我将不胜感激,而
可写位图

下面的简单示例演示了如何在将可写位图分配给图像控件的源属性时连续编写该位图

XAML就是这样:

<Window ...>
    <Grid>
        <Image x:Name="image"/>
    </Grid>
</Window>

下面的简单示例演示如何在将WriteableBitmap指定给图像控件的源属性时连续写入该映射

XAML就是这样:

<Window ...>
    <Grid>
        <Image x:Name="image"/>
    </Grid>
</Window>

Lock/AddDirtyRect/Unlock实际上不会更改任何像素数据。你试过写像素吗?在图像控件上调用InvalidateVisual应该是不必要的。当然,我更新了代码。Lock/AddDirtyRect/Unlock实际上不会更改任何像素数据。你试过写像素吗?在图像控件上调用InvalidateVisual应该是不必要的。当然,我更新了code.tnx以获取您的答案。另一个问题是,在WPF中有没有更快的方法来制作2D图形?这取决于您如何准确定义“2D图形”。您可能想看看这个:我想设计一个类似于绘画的位图编辑器,我应该选择哪种路线?位图编辑器听起来很像您可以使用WriteableBitmap。您可能还想看看.tnx以获得答案。另一个问题是,在WPF中有没有更快的方法来制作2D图形?这取决于您如何准确定义“2D图形”。你可能想看看这个:我想设计一个类似绘画的位图编辑器,我应该选择哪种路线?位图编辑器听起来很像你可以很好地使用WriteableBitmap。你可能还想看看。