windows phone 擷取手機圖片庫中圖片(4)

來源:互聯網
上載者:User

前置條件:手機和電腦未串連或串連電腦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中的類,在提交應用的時候不能通過

運行後的:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.