0

我必须使用从图片库(应用程序的无资产文件夹)获取的图像以编程方式设置网格的背景......

我试过这个代码

MediaLibrary library = new MediaLibrary();

Picture picture = library.Pictures[rnd.Next(0, 7)];
string path = picture.GetPath();

BackgroundImg.ImageSource = new BitmapImage { UriSource = new Uri("ms-appdata:///Local/" + picture.Name, UriKind.Absolute) };

//BackgroundImg.ImageSource = new BitmapImage { UriSource = new Uri(path, UriKind.Absolute) };

如果图片是从项目中的资产文件夹中获取的,则代码有效,所以我认为错误是 uri!

任何人都可以帮助我吗?

谢谢

4

2 回答 2

0

为什么不使用 StorageFile 而不是“ms-appdata:///local/”。

试试这个方法对我来说效果很好。

        public void setBackgroundImage(String pictureName)
       {

        using (var storage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (var stream = storage.OpenFile(pictureName, FileMode.Open))
            {
                BitmapImage bitmapimage = new BitmapImage();
                bitmapimage.SetSource(stream);
                BackgroundImg.ImageSource = bitmapimage;

            }
        }

    }

然后你称之为

setBackgroundImage(picture.Name);

*注意在 Windows Phone 8 中,您仍然可以使用独立存储和 Silverlight Uri。

于 2013-09-28T05:31:53.137 回答
0

我以这种方式解决了:

MediaLibrary library = new MediaLibrary();
Picture picture = library.Pictures[rnd.Next(0, library.Pictures.Count - 1)];

BitmapImage bitmapimage = new BitmapImage();
bitmapimage.SetSource(picture.GetImage());
BackgroundImg.ImageSource = bitmapimage;
于 2013-09-28T22:45:51.073 回答