2013-04-24 86 views
0

在我的應用程序中,用戶使用PhotoChooserTask從相機膠捲中選擇一張照片。我想將照片的位置保存到LogEntry類的字符串變量中,以便我可以根據需要在稍後重新加載照片。如何將照片位置保存爲一個類的字符串變量?

Log是LogEntry類項目的ObservableCollection。

public ObservableCollection<LogEntry> Log = new ObservableCollection<LogEntry>(); 

我該怎麼辦,沒有將照片保存到LogEntry和不保存照片到IsolatedStorage字節數組?

+0

你只需要添加照片位置進入名單。爲什麼你需要將照片保存爲字節和IsolatedStorage? – 2013-04-25 00:21:28

+0

問題在於,如何以Windows Phone期望的方式找到照片位置,並且會理解它。不,我不想保存爲字節或IsolatedStorage。 – 2013-04-25 00:35:10

回答

0

首先,我將所選圖片的名稱和相冊的名稱保存在每個LogEntry項目的屬性中。

要從畫冊加載圖片:

 public BitmapImage GetPicture(string FileName) 
     { 
     // Work around for known bug in the media framework. Hits the static constructors 
     // so the user does not need to go to the picture hub first. 
     MediaPlayer.Queue.ToString(); 

     MediaLibrary ml = null; 
     PictureAlbum cameraRoll = null; 
     PictureAlbum savedPictures = null; 
     PictureAlbum samplePictures = null; 
     PictureAlbum favoritePictures = null; 

     int index = FileName.IndexOf("\\"); 
     string albumName = FileName.Remove(index, FileName.Length - index); 
     string fileName = FileName.Remove(0, index + 1); 

     foreach (MediaSource source in MediaSource.GetAvailableMediaSources()) 
      { 
      if (source.MediaSourceType == MediaSourceType.LocalDevice) 
       { 
       ml = new MediaLibrary(source); 
       PictureAlbumCollection allAlbums = ml.RootPictureAlbum.Albums; 

       foreach (PictureAlbum album in allAlbums) 
        { 
        if (album.Name == "Camera Roll") 
         { 
         cameraRoll = album; 
         } 
        else if (album.Name == "Saved Pictures") 
         { 
         savedPictures = album; 
         } 
        else if (album.Name == "Sample Pictures") 
         { 
         samplePictures = album; 
         } 
        else if (album.Name == "Favorite Pictures") 
         { 
         favoritePictures = album; 
         } 
        } 
       } 
      } 

     PictureAlbum Album; 
     switch (albumName) 
      { 
      case "Camera Roll": 
       Album = cameraRoll; 
       break; 

      case "Saved Pictures": 
       Album = savedPictures; 
       break; 

      case "Sample Pictures": 
       Album = samplePictures; 
       break; 

      case "Favorite Pictures": 
       Album = favoritePictures; 
       break; 

      default: 
       Album = null; 
       break; 
      } 

     if (Album == null) 
      { 
      return new BitmapImage(); 
      } 

     BitmapImage b = new BitmapImage(); 
     foreach (Picture p in Album.Pictures.Take(Album.Pictures.Count)) 
      { 
      if (fileName == p.Name) 
       { 
       b.SetSource(p.GetThumbnail()); 
       break; 
       } 
      } 

     return b; 
     } 
相關問題