如何select和使用Windows 8中的图像

我将Windows Phone 8应用程序移植到Windows 8,我需要select一张图片并设置图片的源代码! 我今天必须移植它。 我用这个:

FileOpenPicker openPicker = new FileOpenPicker(); openPicker.ViewMode = PickerViewMode.Thumbnail; openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; openPicker.FileTypeFilter.Add(".jpg"); openPicker.FileTypeFilter.Add(".jpeg"); openPicker.FileTypeFilter.Add(".png"); Windows.Storage.StorageFile file = await openPicker.PickSingleFileAsync(); if (file != null) { BitmapImage img = new BitmapImage() { UriSource = new Uri((file.Path + file.DisplayName + file.FileType), UriKind.RelativeOrAbsolute) }; image.Source = img; } else { } 

它select了图像,但没有改变源,我也使用:

 FileOpenPicker openPicker = new FileOpenPicker(); openPicker.ViewMode = PickerViewMode.Thumbnail; openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary; openPicker.FileTypeFilter.Add(".jpg"); openPicker.FileTypeFilter.Add(".jpeg"); openPicker.FileTypeFilter.Add(".png"); Windows.Storage.StorageFile file = await openPicker.PickSingleFileAsync(); if (file != null) { BitmapImage img = new BitmapImage() { UriSource = new Uri(file.Path, UriKind.RelativeOrAbsolute) }; bustin.Source = img; dt.Start(); oyunsure.Start(); } else { dt.Start(); oyunsure.Start(); } 

但是两者都不起作用。

干得好:

这比你所期望的要复杂一些。

 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.Storage; using Windows.Storage.Pickers; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media.Imaging; using Windows.UI.Xaml.Navigation; // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238 namespace App1 { /// <summary> /// An empty page that can be used on its own or navigated to within a Frame. /// </summary> public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); } protected override async void OnNavigatedTo(NavigationEventArgs e) { FileOpenPicker opener = new FileOpenPicker(); opener.ViewMode = PickerViewMode.Thumbnail; opener.SuggestedStartLocation = PickerLocationId.PicturesLibrary; opener.FileTypeFilter.Add(".jpg"); opener.FileTypeFilter.Add(".jpeg"); opener.FileTypeFilter.Add(".png"); StorageFile file = await opener.PickSingleFileAsync(); if (file != null) { // We've now got the file. Do something with it. var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); var bitmapImage = new Windows.UI.Xaml.Media.Imaging.BitmapImage(); await bitmapImage.SetSourceAsync(stream); bustin.Source = bitmapImage; var decoder = await Windows.Graphics.Imaging.BitmapDecoder.CreateAsync(stream); } else { //OutputTextBlock.Text = "The operation may have been cancelled."; } } } } 

我已经写这个代码挑选一个图像,并显示在图像控制..它正在工作。

 public async Task<bool> pickPhoto() { FileOpenPicker openPicker = new FileOpenPicker(); openPicker.ViewMode = PickerViewMode.List; openPicker.SuggestedStartLocation = PickerLocationId.Desktop; openPicker.FileTypeFilter.Add("*"); StorageFile file = await openPicker.PickSingleFileAsync(); if (file != null) { var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); BitmapImage image = new BitmapImage(); image.SetSource(stream); imageChangedProfilePic.Source = image; imageChangedProfilePic.Stretch = Stretch.Fill; return true; } else { // OutputTextBlock.Text = "Operation cancelled."; return false; } }