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


前置條件:手機和電腦未連接或連接電腦Zune軟件關閉(與Zune軟件連接時不允許訪問圖片庫); 版本7.1

獲取手機圖片庫圖片的兩種方式: PhotChooserTask方式和XNA方式進行獲取

   PhotChooserTask獲取

引用命名空間

// 引用
// PhotoChooserTask類用到
using Microsoft.Phone.Tasks;
// BitmapImage類用到
using System.Windows.Media.Imaging;

   隱藏文件代碼:

View Code
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應該可以譯為媒體庫,它包含了影音,圖片,是所有媒體的集合

隱藏文件代碼:

View Code
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是個很有用的類,比如你可以獲得里面的歌曲

 

View Code
  MediaLibrary mediaL =  new MediaLibrary();
            SongCollection sc = mediaL.Songs;
             if (sc.Count >  1)
            {
                Song s = sc[ 0];
                MediaPlayer.Play(s);
            }

  知識點②:Picture類的一些屬性或者方法會用得到,比如當前圖片所在的相集,相集下是否還會包含相集,以及相集的名稱,時間等

 小結:整體的思路是從集合中逐級剝離,媒體庫(影音,圖片)-------》圖片集合------》圖片-----》圖片相關屬性;之前忘記從哪個博主那里看到如果用到XNA中的類,在提交應用的時候不能通過

運行后的效果圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM