从隔离存储中显示PNG图像

时间:2015-07-10 19:22:33

标签: c# .net-4.0 png desktop-application isolatedstorage

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

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 Photo Viewer中预览图像文件时,图像文件显示正常。

我还是C#和WPF的新手(仅使用它3个月),我正在寻找一个不需要优雅或通用的简单解决方案;它只需要工作。

1 个答案:

答案 0 :(得分:0)

它表示我会在寻求帮助后半小时回答我自己的问题。在网上搜寻了几天试图解决它,它只是落在我的腿上。我只需要使用正确的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))