【转】Windows Phone在隔离存储里存取图片文件

一共两个页面,第一个为MainPage.xaml,代码如下:

 前台

后台代码如下:

MainPage.xaml.cs

 1 using System;

 2 using System.Collections.Generic;

 3 using System.Linq;

 4 using System.Net;

 5 using System.Windows;

 6 using System.Windows.Controls;

 7 using System.Windows.Documents;

 8 using System.Windows.Input;

 9 using System.Windows.Media;

10 using System.Windows.Media.Animation;

11 using System.Windows.Shapes;

12 using Microsoft.Phone.Controls;

13 using Microsoft.Phone.Tasks;

14 using Microsoft.Phone;

15 using System.IO;

16 using System.IO.IsolatedStorage;

17

18 namespace 在隔离存储中存取照片

19 {

20     public partial class MainPage : PhoneApplicationPage

21     {

22         // Constructor

23         string filename;

24         byte[] _imageAsByte;

25         public MainPage()

26         {

27             InitializeComponent();

28         }

29

30         private void SaveButton_Click(object sender, RoutedEventArgs e)

31         {

32             filename = PhotoName.Text;

33             if (filename != ""&&PhotoImage.Source!=null)

34             {

35                 using (var store = IsolatedStorageFile.GetUserStoreForApplication())

36                 {

37                     if (!store.FileExists(filename) || store.FileExists(filename) && MessageBox.Show("Overwrite the file?", "Question", MessageBoxButton.OKCancel) == MessageBoxResult.OK)

38                     {

39                         using (var stream = store.CreateFile(filename))

40                         {

41                             stream.Write(_imageAsByte, 0, _imageAsByte.Length);

42                         }

43                         PhotoImage.Source = null;

44                         PhotoName.Text = "";

45                         NavigationService.Navigate(new Uri("/Page1.xaml", UriKind.Relative));

46                     }

47                 }

48             }

49             else

50             {

51                 MessageBox.Show("Sorry,but you must take a photo and write the photo‘s name in the textbox!","Warning!",MessageBoxButton.OK);

52             }

53         }

54

55         private void TakePhotoButton_Click(object sender, RoutedEventArgs e)

56         {

57             CameraCaptureTask task = new CameraCaptureTask();

58             task.Completed += new EventHandler<PhotoResult>(task_Completed);

59             task.Show();

60         }

61

62         void task_Completed(object sender, PhotoResult e)

63         {

64             if (e.TaskResult == TaskResult.OK)

65             {

66                 _imageAsByte = new byte[e.ChosenPhoto.Length];

67                 e.ChosenPhoto.Read(_imageAsByte, 0, _imageAsByte.Length);

68                 e.ChosenPhoto.Seek(0, SeekOrigin.Begin);

69                 this.PhotoImage.Source = PictureDecoder.DecodeJpeg(e.ChosenPhoto);

70             }

71         }

72

73         private void ApplicationBarIconButton_Click(object sender, EventArgs e)

74         {

75             NavigationService.Navigate(new Uri("/Page1.xaml",UriKind.Relative));

76         }

77     }

78 }

效果如图所示:

同时还新建了一个照片文件的类,从IsolatedStorage里读取出照片及照片名再绑定到Page1.xaml中的ListBox中。类代码如下:

PhotoFile.cs

 1 using System;

 2 using System.Net;

 3 using System.Windows;

 4 using System.Windows.Controls;

 5 using System.Windows.Documents;

 6 using System.Windows.Ink;

 7 using System.Windows.Input;

 8 using System.Windows.Media;

 9 using System.Windows.Media.Animation;

10 using System.Windows.Shapes;

11

12 namespace 在隔离存储中存取照片

13 {

14     public class PhotoFile

15     {

16         public ImageSource Image { get; set; }

17         public string ImageName { get; set; }

18     }

19 }

第二个Page1.xaml,代码如下:

1  <!--ContentPanel - place additional content here-->

 2         <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">

 3             <ListBox Height="550" HorizontalAlignment="Left" Margin="6,6,0,0" Name="listBox1" VerticalAlignment="Top" Width="460">

 4                 <ListBox.ItemTemplate>

 5                     <DataTemplate>

 6                         <Grid Margin="{StaticResource PhoneTouchTargetOverhang}">

 7                             <StackPanel Orientation="Horizontal">

 8                                 <Image Source="{Binding Image}" Width="130" Height="120" Stretch="Fill"/>

 9                                 <TextBlock Text="{Binding ImageName}" Foreground="Coral" FontSize="32" TextWrapping="Wrap" Width="300"/>

10                             </StackPanel>

11                         </Grid>

12                     </DataTemplate>

13                 </ListBox.ItemTemplate>

14             </ListBox>

15         </Grid>

16     </Grid>

17 

18     <!--Sample code showing usage of ApplicationBar-->

19     <phone:PhoneApplicationPage.ApplicationBar>

20         <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">

21             <shell:ApplicationBarIconButton IconUri="/Images/appbar.add.rest.png" Text="添加" Click="ApplicationBarIconButton_Click"/>

22         </shell:ApplicationBar>

23     </phone:PhoneApplicationPage.ApplicationBar>

后台代码:

Page1.xaml.cs

 1 using System;

 2 using System.Collections.Generic;

 3 using System.Linq;

 4 using System.Net;

 5 using System.Windows;

 6 using System.Windows.Controls;

 7 using System.Windows.Documents;

 8 using System.Windows.Input;

 9 using System.Windows.Media;

10 using System.Windows.Media.Animation;

11 using System.Windows.Shapes;

12 using Microsoft.Phone.Controls;

13 using System.IO;

14 using System.IO.IsolatedStorage;

15 using System.Windows.Media.Imaging;

16

17 namespace 在隔离存储中存取照片

18 {

19     public partial class Page1 : PhoneApplicationPage

20     {

21         IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication();

22         public Page1()

23         {

24             InitializeComponent();

25         }

26

27        protected override void OnNavigatedTo(NavigationEventArgs e)

28         {

29             List<PhotoFile> filelist = new List<PhotoFile>();

30             if (file.GetFileNames() != null)

31             {

32                 foreach (string filename in file.GetFileNames())

33                 {

34                     PhotoFile photo = new PhotoFile();

35                     BitmapImage bmp = new BitmapImage();

36                     using (IsolatedStorageFileStream filestream = file.OpenFile(filename, FileMode.Open, FileAccess.ReadWrite))

37                     {

38                         bmp.SetSource(filestream);

39                         filestream.Flush();

40                         filestream.Close();

41                         photo.Image = bmp;

42                         photo.ImageName = " 照片名:"+filename;

43                     }

44                     filelist.Add(photo);

45                 }

46                 listBox1.ItemsSource = filelist;

47             }

48         }

49

50         private void ApplicationBarIconButton_Click(object sender, EventArgs e)

51         {

52             NavigationService.Navigate(new Uri("/MainPage.xaml",UriKind.Relative));

53         }

54     }

55 }

运行效果如下:

时间: 2024-10-17 07:33:31

【转】Windows Phone在隔离存储里存取图片文件的相关文章

如何在mysql中存储音乐和图片文件

如何在mysql中存储音乐和图片文件? 果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的! 我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件. 本文概述: 在mysql中建立一个新的数据库 一个怎样储存文件的例子程序 一个怎样访问文件的例子程序 在mysql中建立一个新的database 首先,你必须在你的mysql中建立一个新的数据库,我们将会把那些二进制文件储存在这个数据库里.在例子中我会使用下列结构,为了建立

eclipse里打开图片文件乱码解决方案

从eclipse中打开工程文件下的图片文件显示乱码,原因是你电脑系统上没有设置图片的默认打开方式,或者是图片的默认打开方式与eclipse不兼容,尤其是win8操作系统,用户一般将图片的默认打开方式设置为win8的图片浏览器,就是方格子的那种,每次打开图片比较慢,解决方式是将图片的默认打开方式改成windows照片查看器,注意,该步骤只需要在工程外面,任意选中一种图片,然后右键进行修改,需要兼顾jpg及png格式,两种格式都要修改默认打开方式,即可.eclipse里打开图片文件乱码解决方案,布布

[深入浅出WP8.1(Runtime)]生成图片和存储生成的图片文件

7.2.3 使用RenderTargetBitmap类生成图片 RenderTargetBitmap类可以将可视化对象转换为位图,也就是说它可以将任意的UIElement以位图的形式呈现.那么我们在实际的编程中通常会利用RenderTargetBitmap类来对UI界面进行截图操作,比如把程序的界面或者某个控件的外观生成一张图片. 使用RenderTargetBitmap类生成图片一般有两种用途,一种是直接把生成的图片在当前的页面上进行展示,还有一种用途是把生成的图片当作文件存储起来,或者通过某

mongodb存取图片文件功能

MongoDB是一种非关系型数据库(NoSql),很好的实现了面向对象的思想(OO思想),在Mongo DB中 每一条记录都是一个Document对象.Mongo DB最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松的实现CRUD操作. 这篇博客主要介绍如何mongodb存储以及读取文件. mongodb操作文件,主要是通过GridFS类.存储文件主要存放在fs中,其中的fs是数据库默认的.并且GridFS是直接与数据库打交道,与collection集合无

Windows Server 2016软件定义存储之QoS

存储QoS简介 Windows Server 2016文件服务器和Hyper-V群集默认集成了存储QoS功能,基于群集存储空间的存储无论是SOFS SMB共享还是CSV都支持存储QoS,存储QoS通过策略应用到Hyper-V群集上的虚机.文件服务器群集里默认开启QoS策略管理器,用于集中监视存储性能,保存在SMB或者CSV的Hyper-V虚机被策略管理器监视着.策略管理器和Hyper-V服务器形成一个存储QoS策略优化的闭环来反馈调节QoS,策略管理器保持着和Hyper-V沟通存储QoS策略.限

Windows Server 存储空间之存储分层和缓存管理

存储空间存储分层 在谈到存储分层之前,我们需要了解Windows Server存储空间里面包含了多少层以及如何定义每一个分层.基于读写性能快慢的相对值,存储空间分为两个数据存储层,一个存储层为快速层,通常由SSD硬盘提供,用于存储热数据,也即经常访问的数据:另一个存储层为慢速层,通常由HDD硬盘提供,用于存储冷数据,也即不经常访问的数据.默认情况下,存储空间具有这两个存储速率不同的存储层的虚拟磁盘,存储分层目的在于平衡 SSD性能和硬盘驱动器 (HDD)容量.在存储层都有可用空间时,新的数据通常

windows里面的hosts文件

一.什么是Hosts文件? hosts文件是一个用于储存计算机网络中各节点信息的计算机文件.这个文件负责将主机名映射到相应的IP地址.hosts文件通常用于补充或取代网络中DNS的功能.和DNS不同的是,计算机的用户可以直接对hosts文件进行控制. 1.Hosts文件的历史 ARPANET(Internet的前身)并没有对网络中各节点的地址使用DNS进行解析.由于当时对于这个用途并没有中心化的系统,每个网络节点都使用自有的网络节点地图,并指派相应的名称方便用户记忆.当时并没有任何系统来保证网络

python一些模块的exe安装包在windows的64位系统里识别不到已安装Python目录的解决方法

在windows里安装python一些模块时候,有时候源码安装比较困难,pip install也各种报错,这时候最喜欢用别人编译好的exe或者whl文件来安装,但是在windows的64位系统里,如果有一些安装包没怎么考虑过在64位系统上的安装,在安装时候就会找不到你自己安装的python目录. 解决法子:运行国外这个脚本,即可把你64位系统上的python目录添加至注册表里. # # script to register Python 2.0 or later for use with win

可串行化隔离级别里的锁升级

在今天的文章里我会讨论下可串行化(SERIALIZABLE)隔离级别里会有的锁升级(Lock Escalations),还有你如何避免.在上个月的7月14日,我已经介绍了SQL Server里锁升级(Lock Escalations)的基本概念还有为什么需要它们.因此请你回到这个文章来理解下这个非常重要的概念. 可串行化(SERIALIZABLE)隔离级别 可串行化(SERIALIZABLE)隔离级别用来阻止所谓的幻影记录(Phantom Records).为了阻止它们,SQL Server使用