从媒体库中选择照片

PhotoChooserTask

用摄像头拍照

CameraCaptureTask

这两个类是两个Chooser,因而其工作模式符合前文所述的任务模型,在使用方式上,也完全符合Chooser的使用方式。

下面展示它们的使用:

(1)创建如图所示的XAML界面

(2)

//定义Chooser对象

CameraCaptureTask camera;

PhotoChooserTask photoChooser;

(3)

//实例化

camera = new CameraCaptureTask();

camera.Completed += new EventHandler<PhotoResult>(photoChooser_Completed);

photoChooser = new PhotoChooserTask();

photoChooser.Completed += new EventHandler<PhotoResult>(photoChooser_Completed);

(4)

/// <summary>

/// 拍照按钮事件处理

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnTakePhoto_Click(object sender, RoutedEventArgs e)

{

camera.Show();

}

/// <summary>

/// 选择照片事件处理

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void btnChoosePhoto_Click(object sender, RoutedEventArgs e)

{

photoChooser.ShowCamera = true;

photoChooser.Show();

}

(5)

//当完成选择器任务时执行

void photoChooser_Completed(object sender, PhotoResult e)

{

if (e.TaskResult == TaskResult.OK)

{

BitmapImage bitmap = new BitmapImage();

bitmap.SetSource(e.ChosenPhoto);

imgPhoto.Source = bitmap;

txtPhoneName.Text = e.OriginalFileName;

}

}

PhotoChooserTask类的ShowCamera属性决定在显示的选择图片界面中是否显示摄像头标志以允许用户即时拍照并返回。此处设为true,则用户可以及时拍照并返回。

在返回结果中,e. OriginalFileName包含了用户选择的照片的二进制流,e.OriginalFileName包含了用户选择的照片的全路径文件名.