gpt4 book ai didi

c# - WPF BitmapSource 图像源

转载 作者:太空狗 更新时间:2023-10-29 20:04:07 25 4
gpt4 key购买 nike

我将一个 Image.Source 属性绑定(bind)到下面显示的属性的结果。

public BitmapSource MyImageSource
{
get
{
BitmapSource source = null;

PngBitmapDecoder decoder;
using (var stream = new FileStream(@"C:\Temp\logo.png", FileMode.Open, FileAccess.Read, FileShare.Read))
{
decoder = new PngBitmapDecoder(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.None);

if (decoder.Frames != null && decoder.Frames.Count > 0)
source = decoder.Frames[0];
}

return source;
}
}

由于某种原因,这在图像渲染期间失败(在 PresentationCore 程序集的深处)。我确定图像没有损坏,因为我可以在没有绑定(bind)的情况下成功显示相同的图像

<Image Name="FooImage" Source="/logo.png" />

我必须在代码中绑定(bind)图像源,因为我最终将从 base64 字符串创建图像流。

有人知道这是否是 WPF 的错误吗?还是我做错了什么?

最佳答案

问题是 BitmapCacheOption 选项,更改为 BitmapCacheOption.OnLoad 即可。

使用 BitmapCacheOption.None 时,BitmapSource 在图像被渲染之前不会被解码,但是带有 png 的流在那个时候已经被释放了。如果缓存 OnLoad,它会立即解码并缓存结果,而不是在流不再存在时尝试解码。

关于c# - WPF BitmapSource 图像源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/444331/

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