前置條件:手機和電腦未連接或連接電腦Zune軟件關閉(與Zune軟件連接時不允許訪問圖片庫); 版本7.1
獲取手機圖片庫圖片的兩種方式: PhotChooserTask方式和XNA方式進行獲取
PhotChooserTask獲取
引用命名空間
//引用
//PhotoChooserTask類用到
using Microsoft.Phone.Tasks;
//BitmapImage類用到
using System.Windows.Media.Imaging;
隱藏文件代碼:
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;
//引用
//PhotoChooserTask類用到
using Microsoft.Phone.Tasks;
//BitmapImage類用到
using System.Windows.Media.Imaging;
namespace ChoosePhoto
{
public partial class MainPage : PhoneApplicationPage
{
//實例化圖片選擇器
PhotoChooserTask photoChoose = new PhotoChooserTask();
// 構造函數
public MainPage()
{
InitializeComponent();
//設置的委托事件
photoChoose.Completed += new EventHandler<PhotoResult>(photoChoose_Completed);
}
//事件處理完得到圖片
void photoChoose_Completed(object sender, PhotoResult e)
{
if (e.TaskResult==TaskResult.OK)
{
//實例化位圖
BitmapImage bi = new BitmapImage();
//設置位圖源
bi.SetSource(e.ChosenPhoto);
//設置元素位圖
img.Source = bi;
txtName.Content = e.OriginalFileName;
}
}
/// <summary>
/// button事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void txtName_Click(object sender, RoutedEventArgs e)
{
//打開圖片庫
photoChoose.Show();
//知識點①
//是否顯示拍照按鈕
photoChoose.ShowCamera = true;
//知識點②
//設置剪切區域的寬度
photoChoose.PixelWidth = 50;
//設置剪切區域的高度
photoChoose.PixelHeight = 100;
}
}
}
知識點①:PhotoChooserTask類的屬性,該屬性表示是否顯示啟動相機按鈕,一般顯示比較好,增加圖片來源途徑
知識點②:通俗的講應該是設置或者獲取截取區域的高度和寬度
小結: 有裁剪功能是一大特色
XNA方式獲取
引用命名空間
//引用XNA庫
using Microsoft.Xna.Framework.Media;
//BitmapImage類用到
using System.Windows.Media.Imaging;
MediaLibrary應該可以譯為媒體庫,它包含了影音,圖片,是所有媒體的集合
隱藏文件代碼:
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;
//引用XNA庫
using Microsoft.Xna.Framework.Media;
//BitmapImage類用到
using System.Windows.Media.Imaging;
namespace XNAChoosePhoto
{
public partial class MainPage : PhoneApplicationPage
{
//知識點①
MediaLibrary mediaL = new MediaLibrary();
// 構造函數
public MainPage()
{
InitializeComponent();
//獲得圖片的方法
GetPic();
}
/// <summary>
/// 獲得一張圖片
/// </summary>
void GetPic()
{
//獲得媒體庫中所有的圖片
PictureCollection pic = mediaL.Pictures;
if (pic.Count>1)
{
BitmapImage bi = new BitmapImage();
//知識點②
Picture pc=pic[0];
bi.SetSource(pc.GetImage());
img.Source = bi;
txtName.Text = "圖片名稱:" + pc.Name + ";\n該圖片相集名稱:" + pc.Album.Name + ";\n獲取照片攝制時間" + pc.Date;
}
}
}
}
知識點①:MediaLibrary是個很有用的類,比如你可以獲得裡面的歌曲
MediaLibrary mediaL = new MediaLibrary();
SongCollection sc = mediaL.Songs;
if (sc.Count > 1)
{
Song s = sc[0];
MediaPlayer.Play(s);
}
知識點②:Picture類的一些屬性或者方法會用得到,比如當前圖片所在的相集,相集下是否還會包含相集,以及相集的名稱,時間等
小結:整體的思路是從集合中逐級剝離,媒體庫(影音,圖片)-------》圖片集合------》圖片-----》圖片相關屬性;之前忘記從哪個博主那裡看到如果用到XNA中的類,在提交應用的時候不能通過