gpt4 book ai didi

银光 : BitmapImage to WriteableBitmap

转载 作者:行者123 更新时间:2023-12-04 11:15:14 29 4
gpt4 key购买 nike

我可以像这样成功加载以下位图并将其显示在 View 上的图像控件中。

var bitmapImage = new BitmapImage
{
UriSource =
new Uri("../Images/Test.JPG", UriKind.Relative)
};

但是,一旦我添加了这一行以从位图中创建一个 WriteableBitmap,
    var w = new WriteableBitmap(bitmapImage);

我在上面的行中收到运行时错误:“未将对象引用设置为对象的实例。”

似乎 BitmapImage 创建被延迟了,是吗?我应该如何解决这个问题?

更新:

我现在正在尝试这个,但 openImage 似乎永远不会被击中。 (即使没有尝试使其同步,它仍然失败)这里有什么问题?
var image = new BitmapImage();
image.ImageOpened += (sender, args) => resetEventBitmap.Set();
image.ImageFailed += (o, eventArgs) =>
{
resetEventBitmap.Set();
throw eventArgs.ErrorException;
};
image.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
image.UriSource = uri;

resetEventBitmap.WaitOne();

谢谢,

最佳答案

引用:
http://www.blog.ingenuitynow.net/Silverlight+Creating+A+WriteableBitmap+From+A+Uri+Source.aspx

基本上,位图图像有一个依赖属性“CreateOptions”,默认情况下,它被设置为“DelayCreation”。这会导致位图被延迟渲染,直到需要它之后。因此,这会导致我们的“对象引用未设置为对象的实例”错误。为了解决这个问题,我们必须打破 writeablebitmap 构造函数中的位图创建,改变这个选项,然后把它放回去。在 vb.net 中,这看起来像:

    Dim tmpUri As New Uri(yourpath.ToString)
Dim bmp As New BitmapImage
bmp.CreateOptions = BitmapCreateOptions.None
bmp.UriSource = tmpUri
Dim wb As New WriteableBitmap(bmp)

关于银光 : BitmapImage to WriteableBitmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5359356/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com