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

时间:2022-09-25 11:06:42

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

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

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

              <Image Name="PhotoImage" Height="" HorizontalAlignment="Left" Margin="9,6,0,0"  Stretch="Fill" VerticalAlignment="Top" Width=""/>

              <Button Name="SaveButton" Click="SaveButton_Click" Content="保存" Height="" HorizontalAlignment="Left" Margin="7,482,0,0"  VerticalAlignment="Top" Width="">

                  <Button.Background>

                      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">

                          <GradientStop Color="Black" Offset=""/>

                          <GradientStop Color="#FFEB1818" Offset=""/>

                      </LinearGradientBrush>

                 </Button.Background>

             </Button>

             <TextBlock Height="" HorizontalAlignment="Left" Margin="27,442,0,0" Name="textBlock1" Text="输入照片名:" FontSize="" VerticalAlignment="Top"/>

             <TextBox Name="PhotoName" Height="" HorizontalAlignment="Left" Margin="165,424,0,0"  Text="" VerticalAlignment="Top" Width="">

                 <TextBox.Background>

                     <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">

                         <GradientStop Color="Black" Offset=""/>

                         <GradientStop Color="#FFD01818" Offset=""/>

                     </LinearGradientBrush>

                 </TextBox.Background>

             </TextBox>

             <Button Name="TakePhotoButton" Click="TakePhotoButton_Click" Content="拍照" Height="" Margin="9,366,8,0" VerticalAlignment="Top">

                 <Button.Background>

                     <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">

                         <GradientStop Color="Black" Offset=""/>

                         <GradientStop Color="#FFD61212" Offset=""/>

                     </LinearGradientBrush>

                 </Button.Background>

             </Button>

         </Grid>

     </Grid>

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

     <phone:PhoneApplicationPage.ApplicationBar>

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

             <shell:ApplicationBarIconButton IconUri="/Images/appbar.feature.search.rest.png" Text="查看" Click="ApplicationBarIconButton_Click"/>

         </shell:ApplicationBar>

     </phone:PhoneApplicationPage.ApplicationBar>

前台

后台代码如下:

MainPage.xaml.cs

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Net;

  using System.Windows;

  using System.Windows.Controls;

  using System.Windows.Documents;

  using System.Windows.Input;

  using System.Windows.Media;

 using System.Windows.Media.Animation;

 using System.Windows.Shapes;

 using Microsoft.Phone.Controls;

 using Microsoft.Phone.Tasks;

 using Microsoft.Phone;

 using System.IO;

 using System.IO.IsolatedStorage;

 namespace 在隔离存储中存取照片

 {

     public partial class MainPage : PhoneApplicationPage

     {

         // Constructor

         string filename;

         byte[] _imageAsByte;

         public MainPage()

         {

             InitializeComponent();

         }

         private void SaveButton_Click(object sender, RoutedEventArgs e)

         {

             filename = PhotoName.Text;

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

             {

                 using (var store = IsolatedStorageFile.GetUserStoreForApplication())

                 {

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

                     {

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

                         {

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

                         }

                         PhotoImage.Source = null;

                         PhotoName.Text = "";

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

                     }

                 }

             }

             else

             {

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

             }

         }

         private void TakePhotoButton_Click(object sender, RoutedEventArgs e)

         {

             CameraCaptureTask task = new CameraCaptureTask();

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

             task.Show();

         }

         void task_Completed(object sender, PhotoResult e)

         {

             if (e.TaskResult == TaskResult.OK)

             {

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

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

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

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

             }

         }

         private void ApplicationBarIconButton_Click(object sender, EventArgs e)

         {

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

         }

     }

 }

效果如图所示:

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

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

PhotoFile.cs

  using System;

  using System.Net;

  using System.Windows;

  using System.Windows.Controls;

  using System.Windows.Documents;

  using System.Windows.Ink;

  using System.Windows.Input;

  using System.Windows.Media;

  using System.Windows.Media.Animation;

 using System.Windows.Shapes;

 namespace 在隔离存储中存取照片

 {

     public class PhotoFile

     {

         public ImageSource Image { get; set; }

         public string ImageName { get; set; }

     }

 }

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

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

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

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

                  <ListBox.ItemTemplate>

                      <DataTemplate>

                          <Grid Margin="{StaticResource PhoneTouchTargetOverhang}">

                              <StackPanel Orientation="Horizontal">

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

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

                             </StackPanel>

                         </Grid>

                     </DataTemplate>

                 </ListBox.ItemTemplate>

             </ListBox>

         </Grid>

     </Grid>

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

     <phone:PhoneApplicationPage.ApplicationBar>

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

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

         </shell:ApplicationBar>

     </phone:PhoneApplicationPage.ApplicationBar>

后台代码:

Page1.xaml.cs

  using System;

  using System.Collections.Generic;

  using System.Linq;

  using System.Net;

  using System.Windows;

  using System.Windows.Controls;

  using System.Windows.Documents;

  using System.Windows.Input;

  using System.Windows.Media;

 using System.Windows.Media.Animation;

 using System.Windows.Shapes;

 using Microsoft.Phone.Controls;

 using System.IO;

 using System.IO.IsolatedStorage;

 using System.Windows.Media.Imaging;

 namespace 在隔离存储中存取照片

 {

     public partial class Page1 : PhoneApplicationPage

     {

         IsolatedStorageFile file = IsolatedStorageFile.GetUserStoreForApplication();

         public Page1()

         {

             InitializeComponent();

         }

        protected override void OnNavigatedTo(NavigationEventArgs e)

         {

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

             if (file.GetFileNames() != null)

             {

                 foreach (string filename in file.GetFileNames())

                 {

                     PhotoFile photo = new PhotoFile();

                     BitmapImage bmp = new BitmapImage();

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

                     {

                         bmp.SetSource(filestream);

                         filestream.Flush();

                         filestream.Close();

                         photo.Image = bmp;

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

                     }

                     filelist.Add(photo);

                 }

                 listBox1.ItemsSource = filelist;

             }

         }

         private void ApplicationBarIconButton_Click(object sender, EventArgs e)

         {

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

         }

     }

 }

运行效果如下:

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

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

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

  1. &lbrack;深入浅出WP8&period;1&lpar;Runtime&rpar;&rsqb;生成图片和存储生成的图片文件

    7.2.3 使用RenderTargetBitmap类生成图片 RenderTargetBitmap类可以将可视化对象转换为位图,也就是说它可以将任意的UIElement以位图的形式呈现.那么我们在实 ...

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

    如何在mysql中存储音乐和图片文件? 果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的! 我将告诉你怎样通过HTML表单来储存这些文件, ...

  3. Windows Phone开发(29):隔离存储C

    原文:Windows Phone开发(29):隔离存储C 本文是隔离存储的第三节,大家先喝杯咖啡放松,今天的内容也是非常简单,我们就聊一件东东--用户设置. 当然了,可能翻译为应用程序设置合适一些,不 ...

  4. Windows Phone开发(28):隔离存储B

    原文:Windows Phone开发(28):隔离存储B 上一节我们聊了目录的操作,这一节我们继续来看看如何读写文件. 首先说一下题外话,许多朋友都在摇摆不定,三心二意,其实这样的学习态度是很不好的, ...

  5. Windows Phone开发(27):隔离存储A

    原文:Windows Phone开发(27):隔离存储A 在很多资料或书籍上都翻译为"独立存储",不过,我想了一下,决定将IsolatedStorage翻译为"隔离存储& ...

  6. Windows里面的hosts文件

    一.什么是Hosts文件? hosts文件是一个用于储存计算机网络中各节点信息的计算机文件.这个文件负责将主机名映射到相应的IP地址.hosts文件通常用于补充或取代网络中DNS的功能.和DNS不同的 ...

  7. windows下部署 ISCSI存储

    Write bt xiaoyang 配置篇 这里使用的软件为iscsiTargetqfe 1.      首先安装软件,可在微软官网下载 2.      然后找到安装程序 3.      完成安装后打 ...

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

    在windows里安装python一些模块时候,有时候源码安装比较困难,pip install也各种报错,这时候最喜欢用别人编译好的exe或者whl文件来安装,但是在windows的64位系统里,如果 ...

  9. 引用AForge&period;video&period;ffmpeg,打开时会报错:找不到指定的模块,需要把发行包第三方文件externals&bsol;ffmpeg&bsol;bin里的dll文件拷到windows的system32文件夹下。

    引用AForge.video.ffmpeg,打开时会报错:找不到指定的模块,需要把发行包第三方文件externals\ffmpeg\bin里的dll文件拷到windows的system32文件夹下. ...

随机推荐

  1. 重新签名IPA ( iPhone )

    提示:暂时不能用了,企业证书滥用 ios 企业证书 ipa 重新签名发布 1. 应用场景 当前有一个 未用企业证书签名的 ipa 文件,默认是不可以直接安装到设备上的:我们需要用企业版证书签名: 当前 ...

  2. android 6&period;0权限处理

    在模拟器测试好的程序,运行在mate8上面一直崩,经多方查探才找到以下博文,方法还没掌握,但也算是找到原因了: http://***/article/android-6-0-runtime-permi ...

  3. cocos2dx android平台事件系统解析

    对于cocos2dx在android平台事件的响应过程很模糊,于是分析了下源码,cocos2dx 版本3.4,先导入一个android工程,然后看下AndroidManifest.xml <ap ...

  4. SQL Server 优化器&plus;SQL 基础

    http://www.cnblogs.com/shanksgao/tag/%E4%BC%98%E5%8C%96%E5%99%A8/ http://www.cnblogs.com/double-K/ca ...

  5. Unicode&comma;GBK和UTF8

    字符集 在介绍他们之间的区别时, 我们先讲下什么是Unicode. 简单来说,Unicode是一个字符集(character set), 和ASCII一样, 其作用是用一系列数字来表示字符(chara ...

  6. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  7. window 服务器的Tomcat 控制台日志保存到日志文件&period;

    在Linux系统中,Tomcat 启动后默认将很多信息都写入到 catalina.out 文件中,我们可以通过tail  -f  catalina.out 来跟踪Tomcat 和相关应用运行的情况. ...

  8. Cisco VSS

    1.原理 VSS是将两台及以上的物理设备虚拟成逻辑上的一台,可类比堆叠.VSS在控制层面上两个交换机有主从之分,但在数据面上处理是双活的.无论是从网络控制层面和管理视图上在网络上都是一个单独的设备实体 ...

  9. 005-spring boot 2&period;0&period;4-jdbc升级

    一.概述 Springboot2默认数据库连接池选择了HikariCP为何选择HikariCP理由一.代码量理由二.口碑理由三.速度理由四.稳定性理由五.可靠性HikariCP为什么这么快优化并精简字 ...

  10. linux kernel swap daemon

    The name swap daemon is a bit of a misnomer as the daemon does more than just swap modified pages ou ...