Xaml 加载图像后启动动画(如图所示)
我使用它从uri加载图像,然后用.xaml页面中定义的动画(故事板)显示图像:Xaml 加载图像后启动动画(如图所示),xaml,windows-phone-7,windows-phone-8,windows-phone,isolatedstorage,Xaml,Windows Phone 7,Windows Phone 8,Windows Phone,Isolatedstorage,我使用它从uri加载图像,然后用.xaml页面中定义的动画(故事板)显示图像: var coverBitmap = new BitmapImage(urlToNewCover) { CreateOptions = BitmapCreateOptions.None }; coverBitmap.ImageOpened += async (s, args) => SetLookFromLoadedBitmap(coverBitmap, track); private void
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);
怎么了?我怎样才能修好它?谢谢我的回答,嗯:)
从isolatedstorage加载时为什么不使用event?哪个事件?因为当我试图添加
coverBitmap.ImageOpened+=async(s,args)=>SetLookFromLoadedBitmap(coverBitmap,track)代码>从隔离存储加载到代码块,并从LoadedBitmap(coverBitmap,track)中删除行SetLookFromLoadedBitmap代码>则不显示任何内容。我猜ImageOpened事件只适用于从internet下载的图像。参考URL:如果您使用完整的图像文件路径作为源,可能图像打开事件会出现我认为您的评论正是我想要的,但您能帮助我在代码中创建完整路径吗?我在track.AlbumArt.OriginalString中有类似cover.jpg的内容,它位于独立存储的根目录中。我试图使用Package.Current.InstalledLocation.Path
或isostore://
,但未找到异常文件。字符串localFolderPath=ApplicationData.Current.LocalFolder.Path;Path.Combine(localFolderPath,track.AlbumArt.OriginalString);//仅限wp8
string localFolderPath = ApplicationData.Current.LocalFolder.Path; Path.Combine( localFolderPath, track.AlbumArt.OriginalString );