【问题标题】:Starting animation after image is loaded (is shown)加载图像后启动动画(如图所示)
【发布时间】: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.Pathisostore:/,但找不到异常文件。
  • 字符串 localFolderPath = ApplicationData.Current.LocalFolder.Path; Path.Combine(localFolderPath, track.AlbumArt.OriginalString); // 仅限 wp8

标签: xaml windows-phone-7 windows-phone-8 windows-phone isolatedstorage


【解决方案1】:

我的回答,呵呵:)

string localFolderPath = ApplicationData.Current.LocalFolder.Path; Path.Combine( localFolderPath, track.AlbumArt.OriginalString ); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    相关资源
    最近更新 更多