如何存储从网络接收的图像并将其显示在Windows Phone 7应用程序中

巴库

我正在Windows Phone 7应用程序中构建我的第一个应用程序。我有一幅来自网络的图像,当单击该图像时,我导航到另一个页面。我的xaml代码是:

 <Button Click="Image_Click" Name="image1" Margin="-33,-16,-26,-13">
            <Button.Background>
                <ImageBrush Stretch="Fill"  ImageSource = "http://political-leader.vzons.com/ArvindKejriwal/images/icons/landing.png"/>
            </Button.Background>
        </Button>

我的.cs代码是

private void Image_Click(object sender, RoutedEventArgs e)
    {
        NavigationService.Navigate(new Uri("/AAP.xaml", UriKind.Relative));
    }

现在的问题是我想存储图像,以便甚至可以在脱机时查看它。任何人都可以帮助我为此目的进行哪些修改。

har07

这是有关如何执行此操作的示例。逻辑如下:

  1. 在页面的构造函数中,调用LoadImage方法。
  2. 如果可用,该方法会将imageBrush的ImageSource设置为独立存储中的图像。
  3. 如果隔离存储中不存在该映像,则LoadImage方法将从Web下载该映像,并在下载完成后调用事件处理程序。
  4. 然后,事件处理程序(DownloadCompleted方法)将图像保存到隔离存储中,然后LoadImage再次调用下一步将参考第2点。

您可能需要稍后对其进行改进,以实现MVVM和使用DataBinding。

参考:nickharris.netgeekchamp.com

string imageName = "myImage.jpg";
string imageUrl = "http://political-leader.vzons.com/ArvindKejriwal/images/icons/landing.png";

public MainPage()
{
    InitializeComponent();
    LoadImage();
}

private void LoadImage()
{
    BitmapImage bi = new BitmapImage();
    using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
    {
        //load image from Isolated Storage if it already exist
        if (myIsolatedStorage.FileExists(imageName))
        {
            using (IsolatedStorageFileStream fileStream = myIsolatedStorage.OpenFile(imageName, FileMode.Open, FileAccess.Read))
            {
                bi.SetSource(fileStream);
                imageBrushName.ImageSource = bi;
            }
        }
        //else download image to Isolated Storage
        else
        {
            WebClient wc = new WebClient();
            wc.OpenReadCompleted += new OpenReadCompletedEventHandler(DownloadCompleted);
            wc.OpenReadAsync(new Uri(imageUrl, UriKind.Absolute), wc);
        }
    }
}

private void DownloadCompleted(object sender, OpenReadCompletedEventArgs e)
{
    if (e.Error == null && !e.Cancelled)
    {
        try
        {
            using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                IsolatedStorageFileStream fileStream = myIsolatedStorage.CreateFile(imageName);

                BitmapImage bitmap = new BitmapImage();
                bitmap.SetSource(e.Result);
                WriteableBitmap wb = new WriteableBitmap(bitmap);

                // Encode WriteableBitmap object to a JPEG stream.
                Extensions.SaveJpeg(wb, fileStream, wb.PixelWidth, wb.PixelHeight, 0, 85);
                fileStream.Close();
            }
            //after image saved to Iso storage, call LoadImage method again
            //so the method will set imageBrush's ImageSource to image in Iso storage
            LoadImage();
        }
        catch (Exception ex)
        {
            //Exception handle appropriately for your app  
        }
    }
    else
    {
        //Either cancelled or error handle appropriately for your app  
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Windows Phone应用程序中编写Xml

来自分类Dev

Windows Phone应用程序中的CEF

来自分类Dev

如何在Windows Phone 7应用程序的列表框中显示完整数据

来自分类Dev

阅读Windows Phone 8中的应用程序使用的权限

来自分类Dev

在Windows Phone中隐藏应用程序栏

来自分类Dev

Windows Phone应用程序中找不到文件异常

来自分类Dev

在Windows Phone Silverlight应用程序中打开Windows商店

来自分类Dev

如何在Windows Phone 8.1(WinJS)应用程序中隐藏应用程序栏?

来自分类Dev

在Windows Phone应用程序中添加模糊背景

来自分类Dev

在Windows Phone 8.0应用程序中启用方向

来自分类Dev

如何在Windows Phone 7和8中获取应用程序状态事件?

来自分类Dev

在Windows Phone 8.1应用程序中显示Yandex映射

来自分类Dev

Windows Phone 8.1中的主题独立应用程序栏

来自分类Dev

Xamarin Studio中设置的Windows Phone应用程序

来自分类Dev

Windows Phone 8.1应用程序中的后台线程

来自分类Dev

在Ubuntu中开发Windows Phone 8应用程序的IDE

来自分类Dev

应用程序中的Windows Phone磁贴

来自分类Dev

如何存储和使用应用程序对象Windows Phone 7/8?

来自分类Dev

在Windows Phone 7中清理应用程序缓存

来自分类Dev

创建Windows Phone应用程序的程序

来自分类Dev

如何在Windows Phone 7应用程序开发的应用程序栏中添加超过4个图标

来自分类Dev

在Windows Phone 7应用程序中添加搜索框

来自分类Dev

如何在Windows Phone 7应用程序开发中制作自定义文本块

来自分类Dev

在Windows Phone 8应用程序中触发电话

来自分类Dev

Windows Phone(通用)应用程序中的生成错误

来自分类Dev

Windows Phone应用程序提交中的关键字

来自分类Dev

在Windows Phone Native / XAML应用程序中获取方向

来自分类Dev

Windows Phone 8中的应用程序栏

来自分类Dev

在Windows Phone应用程序中添加模糊背景

Related 相关文章

  1. 1

    在Windows Phone应用程序中编写Xml

  2. 2

    Windows Phone应用程序中的CEF

  3. 3

    如何在Windows Phone 7应用程序的列表框中显示完整数据

  4. 4

    阅读Windows Phone 8中的应用程序使用的权限

  5. 5

    在Windows Phone中隐藏应用程序栏

  6. 6

    Windows Phone应用程序中找不到文件异常

  7. 7

    在Windows Phone Silverlight应用程序中打开Windows商店

  8. 8

    如何在Windows Phone 8.1(WinJS)应用程序中隐藏应用程序栏?

  9. 9

    在Windows Phone应用程序中添加模糊背景

  10. 10

    在Windows Phone 8.0应用程序中启用方向

  11. 11

    如何在Windows Phone 7和8中获取应用程序状态事件?

  12. 12

    在Windows Phone 8.1应用程序中显示Yandex映射

  13. 13

    Windows Phone 8.1中的主题独立应用程序栏

  14. 14

    Xamarin Studio中设置的Windows Phone应用程序

  15. 15

    Windows Phone 8.1应用程序中的后台线程

  16. 16

    在Ubuntu中开发Windows Phone 8应用程序的IDE

  17. 17

    应用程序中的Windows Phone磁贴

  18. 18

    如何存储和使用应用程序对象Windows Phone 7/8?

  19. 19

    在Windows Phone 7中清理应用程序缓存

  20. 20

    创建Windows Phone应用程序的程序

  21. 21

    如何在Windows Phone 7应用程序开发的应用程序栏中添加超过4个图标

  22. 22

    在Windows Phone 7应用程序中添加搜索框

  23. 23

    如何在Windows Phone 7应用程序开发中制作自定义文本块

  24. 24

    在Windows Phone 8应用程序中触发电话

  25. 25

    Windows Phone(通用)应用程序中的生成错误

  26. 26

    Windows Phone应用程序提交中的关键字

  27. 27

    在Windows Phone Native / XAML应用程序中获取方向

  28. 28

    Windows Phone 8中的应用程序栏

  29. 29

    在Windows Phone应用程序中添加模糊背景

热门标签

归档