显示来自隔离存储的PNG图像

本文关键字:PNG 图像 存储 隔离 显示 | 更新日期: 2023-09-27 18:02:20

我已经工作了几天,试图弄清楚如何保存和加载图像到孤立的存储。昨天,我终于设法解决了我存储它们时遇到的任何问题,但现在我需要将图像添加为菜单项的图标,我不知道我的代码有什么问题:

var image = new System.Windows.Controls.Image();
using(var stream = new IsolatedStorageFileStream((string) (directory + file + ext), 
                   FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly()))
{
    image.Source = (BitmapSource) new PngBitmapDecoder(stream,
                    BitmapCreateOptions.PreservePixelFormat,
                    BitmapCacheOptions.Default).Frames[0];
}
Menu menu = new Menu();
MenuItem item = new MenuItem();
item.Header = file;
item.Icon = image;
menu.Items.Add(item);

该图像在菜单中显示为正确的大小,但它是一个空白图像。当我在Windows照片查看器中预览图像时,图像文件显示图像很好。

我对c#和WPF仍然很陌生(只使用了3个月),我正在寻找一个简单的解决方案,不需要真正优雅或通用;它只需要工作

显示来自隔离存储的PNG图像

我想我会在请求帮助半小时后回答自己的问题。我在网上搜了好几天想弄明白,结果就这么顺手找到了。我只需要用正确的FileAccess实例化我的流:

我只是替换了

using(var stream = new IsolatedStorageFileStream((string) (directory + file + ext), 
                   FileMode.Open, IsolatedStorageFile.GetUserStoreForAssembly()))

using(var stream = IsolatedStorageFile.GetUserStoreForAssembly().OpenFile(
                   (string) (directory + file + ext), FileMode.Open, FileAccess.Read))