2011-06-29 32 views
0

我試圖將一張圖像控件中的圖像傳遞到另一頁面。 例如,我在Page1.xaml中有一個名爲「image1」的圖像控件,我希望「image1」中顯示的圖像可以通過/顯示在Page2.xaml ink canvas中。 你能幫我解決這個問題嗎? 謝謝。將圖像從一個頁面傳遞到另一個Windows Phone 7

回答

1

第一頁將圖像保存爲獨立存儲作爲文件'photo.jpg'。第二頁閱讀。

第1頁:

public partial class Page1 : PhoneApplicationPage 
{ 
    PhotoChooserTask PhotoChooser; 
    int ImageWidth, ImageHeight; 
    // Constructor 
    public Page1() 
    { 
     InitializeComponent(); 

     ImageWidth = (int)PageImage.Width; 
     ImageHeight = (int)PageImage.Height; 

     PhotoChooser = new PhotoChooserTask(); 
     PhotoChooser.PixelWidth = ImageWidth; 
     PhotoChooser.PixelHeight = ImageHeight; 
     PhotoChooser.ShowCamera = true; 

     PhotoChooser.Completed += new EventHandler<PhotoResult>(PhotoChooser_Completed); 
    } 

    void PhotoChooser_Completed(object sender, PhotoResult e) 
    { 
     if (e.TaskResult == TaskResult.OK) 
     { 
      IsolatedStorageFile Store = IsolatedStorageFile.GetUserStoreForApplication(); 
      IsolatedStorageFileStream Stream = new IsolatedStorageFileStream("photo.jpg", FileMode.Create, FileAccess.Write, Store); 

      WriteableBitmap myImage = new WriteableBitmap(ImageWidth, ImageHeight); 
      myImage.SetSource(e.ChosenPhoto); 
      PageImage.Source = myImage; 
      PageImage.InvalidateArrange(); 
      myImage.SaveJpeg(Stream, ImageWidth, ImageHeight, 0, 100); 

      Stream.Close(); 
     } 
    } 

    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 

     if (IsolatedStorageFile.GetUserStoreForApplication().FileExists("photo.jpg")) 
     { 
      IsolatedStorageFile Store = IsolatedStorageFile.GetUserStoreForApplication(); 
      IsolatedStorageFileStream Stream = new IsolatedStorageFileStream("photo.jpg", FileMode.Open, FileAccess.Read, Store); 

      WriteableBitmap myImage = new WriteableBitmap(ImageWidth, ImageHeight); 
      myImage.LoadJpeg(Stream); 

      PageImage.Source = myImage; 
      PageImage.InvalidateArrange(); 
      Stream.Close(); 
     } 
    } 

    private void ToPage2Button_Click(object sender, System.Windows.RoutedEventArgs e) 
    { 
     NavigationService.Navigate(new Uri("/Page2.xaml", UriKind.Relative)); 
    } 

    private void LoadButton_Click(object sender, System.Windows.RoutedEventArgs e) 
    { 
     PhotoChooser.Show(); 
    } 
} 

第2頁:

public partial class Page2 : PhoneApplicationPage 
{ 
    int ImageWidth, ImageHeight; 

    public Page2() 
    { 
     InitializeComponent(); 

     ImageWidth = (int)PageImage.Width; 
     ImageHeight = (int)PageImage.Height; 
    } 

    private void BackButton_Click(object sender, System.Windows.RoutedEventArgs e) 
    { 
     NavigationService.GoBack(); 
    } 

    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 

     if (IsolatedStorageFile.GetUserStoreForApplication().FileExists("photo.jpg")) 
     { 
      IsolatedStorageFile Store = IsolatedStorageFile.GetUserStoreForApplication(); 
      IsolatedStorageFileStream Stream = new IsolatedStorageFileStream("photo.jpg", FileMode.Open, FileAccess.Read, Store); 

      WriteableBitmap myImage = new WriteableBitmap(ImageWidth, ImageHeight); 
      myImage.LoadJpeg(Stream); 

      PageImage.Source = myImage; 
      PageImage.InvalidateArrange(); 
      Stream.Close(); 
     } 
    } 
} 
+0

順便說一句,爲什麼使用照片選擇器任務? –

+0

這只是生成圖像的示例。你必須從你的源代碼中保存你的圖像 – Ku6opr

+0

如果你已經把圖像加載到你的控件中,你可以用下面的代碼保存它:'WriteableBitmap ImageToSave = new WriteableBitmap(PageImage,null)',其中PageImage是你的UIElement。然後使用上面的代碼保存並加載到隔離存儲器 – Ku6opr

相關問題