【发布时间】:2014-01-02 23:08:38
【问题描述】:
我正在使用它从 uri 加载图像,然后用 .xaml 页面中定义的动画(故事板)显示它:
var coverBitmap = new BitmapImage(urlToNewCover)
{
CreateOptions = BitmapCreateOptions.None
};
coverBitmap.ImageOpened += async (s, args) => SetLookFromLoadedBitmap(coverBitmap, track);
private void SetLookFromLoadedBitmap(BitmapImage coverBitmap, AudioTrack track)
{
SetCoverAndBackground(coverBitmap);
SetLabelsByTrack(track);
CoverImageSlideIn.Begin();
}
private void SetCoverAndBackground(BitmapImage bm)
{
ImgAlbumCover.Source = bm;
ImgAlbumCoverCD.Visibility = Visibility.Collapsed;
ChangeImageForBackground(bm);
}
private void ChangeImageForBackground(object s)
{
var wb = ImageHelpers.BlurBitmap((BitmapImage)s);
var brush = new ImageBrush { ImageSource = wb };
LayoutRoot.Background = brush;
}
它正在工作,没关系。但是当我尝试使用来自独立存储的图像时,动画没有开始。图片刚刚显示。
var coverBitmap = new BitmapImage();
using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
{
if (isf.FileExists(track.AlbumArt.OriginalString))
{
using (var sourceFile = isf.OpenFile(track.AlbumArt.OriginalString, FileMode.Open, FileAccess.Read))
{
coverBitmap.SetSource(sourceFile);
}
}
}
SetLookFromLoadedBitmap(coverBitmap, track);
怎么了?我该如何解决?谢谢
【问题讨论】:
-
从隔离存储加载时为什么不使用事件?
-
哪个事件?因为当我尝试将
coverBitmap.ImageOpened += async (s, args) => SetLookFromLoadedBitmap(coverBitmap, track);添加到从隔离存储加载的代码块中并删除行SetLookFromLoadedBitmap(coverBitmap, track);时,什么都没有显示。我猜 ImageOpened 事件仅适用于从互联网下载的图像。 -
引用 URL:suchan.cz/2013/05/… 如果您使用完整图像文件路径作为源,可能会引发图像打开事件
-
我认为您的评论正是我想要的,但您能帮我在代码中创建完整路径吗?我在 track.AlbumArt.OriginalString 中有类似 cover.jpg 的东西,它位于隔离存储的根目录中。我尝试使用
Package.Current.InstalledLocation.Path或isostore:/,但找不到异常文件。 -
字符串 localFolderPath = ApplicationData.Current.LocalFolder.Path; Path.Combine(localFolderPath, track.AlbumArt.OriginalString); // 仅限 wp8
标签: xaml windows-phone-7 windows-phone-8 windows-phone isolatedstorage