【转】Windows Phone在隔离存储里存取图片文件
一共两个页面,第一个为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)); } } }
效果如图所示:
同时还新建了一个照片文件的类,从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在隔离存储里存取图片文件的更多相关文章
- [深入浅出WP8.1(Runtime)]生成图片和存储生成的图片文件
7.2.3 使用RenderTargetBitmap类生成图片 RenderTargetBitmap类可以将可视化对象转换为位图,也就是说它可以将任意的UIElement以位图的形式呈现.那么我们在实 ...
- 如何在mysql中存储音乐和图片文件
如何在mysql中存储音乐和图片文件? 果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的! 我将告诉你怎样通过HTML表单来储存这些文件, ...
- Windows Phone开发(29):隔离存储C
原文:Windows Phone开发(29):隔离存储C 本文是隔离存储的第三节,大家先喝杯咖啡放松,今天的内容也是非常简单,我们就聊一件东东--用户设置. 当然了,可能翻译为应用程序设置合适一些,不 ...
- Windows Phone开发(28):隔离存储B
原文:Windows Phone开发(28):隔离存储B 上一节我们聊了目录的操作,这一节我们继续来看看如何读写文件. 首先说一下题外话,许多朋友都在摇摆不定,三心二意,其实这样的学习态度是很不好的, ...
- Windows Phone开发(27):隔离存储A
原文:Windows Phone开发(27):隔离存储A 在很多资料或书籍上都翻译为"独立存储",不过,我想了一下,决定将IsolatedStorage翻译为"隔离存储& ...
- Windows里面的hosts文件
一.什么是Hosts文件? hosts文件是一个用于储存计算机网络中各节点信息的计算机文件.这个文件负责将主机名映射到相应的IP地址.hosts文件通常用于补充或取代网络中DNS的功能.和DNS不同的 ...
- windows下部署 ISCSI存储
Write bt xiaoyang 配置篇 这里使用的软件为iscsiTargetqfe 1. 首先安装软件,可在微软官网下载 2. 然后找到安装程序 3. 完成安装后打 ...
- python一些模块的exe安装包在windows的64位系统里识别不到已安装Python目录的解决方法
在windows里安装python一些模块时候,有时候源码安装比较困难,pip install也各种报错,这时候最喜欢用别人编译好的exe或者whl文件来安装,但是在windows的64位系统里,如果 ...
- 引用AForge.video.ffmpeg,打开时会报错:找不到指定的模块,需要把发行包第三方文件externals\ffmpeg\bin里的dll文件拷到windows的system32文件夹下。
引用AForge.video.ffmpeg,打开时会报错:找不到指定的模块,需要把发行包第三方文件externals\ffmpeg\bin里的dll文件拷到windows的system32文件夹下. ...
随机推荐
- KIWI Syslog配置
日志服务器Kiwi+Syslogd+8.3.7破解版 Window收集服务器日志evtsys_exe_32 默认地,kiwi使用UDP 514端口接收日志数据,安装成功后即可接收日志 使用命令nets ...
- HTML5中id可以用数字开头,但在css中不能正常使用
昨晚在看<响应式Web设计:html5和css3实战>时,书中提到“HTML5中的ID指可以用数字开头”.这个还真不知道,于是测试了一下,发现了问题. 在H5描述中是这样说的: 在css样 ...
- php下xcache的安装
下载xcache: wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz 安装: tar zxvf xcache ...
- centos7 zabbix3 install done
centOS7安装zabbix3.0 一.前提: 现在zabbix出现了3.0版本,服务器端只支持centOS7,客户端和代理可以支持centOS6,实验环境是服务端安装centOS7,客户用cent ...
- jpa更新数据出错
在更新表的一条记录时出错,错误为“java.sql.SQLException: Field 'is_del' doesn't have a default value”,表有一个属性isDel为Boo ...
- 【转载】关于.NET里的内存泄漏
所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中..Net 中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中清除掉.虽然.N ...
- 我的前端架构之二--统一扩展Js方法
我的前端架构汇总 MyJs_Core.js 这是一个核心的Js文件,它扩展了原生的Js方法.如下: Array对象: 1) indexOf 2) max 3) min 4) removeAt 5) i ...
- Unity 热更新实例一、C#Light 和UI系统使用实例
接下来我会运用热更新的机制,逐步制作一些例子来阐释脚本系统如何和Unity结合. 脚本不限于使用C#Lite,但是C#Lite会有一些便利之处,请往下看. 结合机制也不限于这一种,但是C#Lite的设 ...
- buildbot入门系列—介绍篇
一.介绍 1. buildbot是一个开源的基于python的持续集成系统,它能够以下三种方式触发相应的自动构建和测试运行,从而迅速的发现问题所在,同时指出造成这个错误的开发人员,当然我们还可以通过页 ...
- 初识canvas,使用canvas做一个百分比加载进度的动画
canvas作为H5中重要的新增特性,使开发者可以用它来创作各种令人惊叹的作品.先来看一下浏览器对canvas的支持情况. <canvas> 标签定义图形,比如图表和其他图像,我们使用脚本 ...