[WP8] PhotoChooserTask & CameraCaptureTask

Estas clases nos permitirán seleccionar una foto desde nuestra librería de medios o tomar una nueva foto respectivamente.

A continuación un ejemplo muy sencillo de como usarlos para mostrar la foto seleccionada o capturada en un elemento Image.

Paso 1

Definir el XAML del elemento Image y los botones de la barra de la aplicación.


<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid x:Name="ContentPanel">
<Image x:Name="image"/>
</Grid>
</Grid>

<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar>
<shell:ApplicationBar.Buttons>
<shell:ApplicationBarIconButton IconUri="/Assets/AppBar/folder.png" Text="select photo" Click="SelectPhotoIconButton_Click"/>
<shell:ApplicationBarIconButton IconUri="/Assets/AppBar/feature.camera.png" Text="take photo" Click="TakePhotoIconButton_Click"/>
</shell:ApplicationBar.Buttons>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>

Paso 2

En el code-behind manejamos los eventos de los ApplicationBarIconButton de la siguiente manera.


private void SelectPhotoIconButton_Click(object sender, EventArgs e)
{
var photoChooserTask = new PhotoChooserTask();
photoChooserTask.ShowCamera = true;
photoChooserTask.Completed += photoChooserTask_Completed;
photoChooserTask.Show();
}

private void TakePhotoIconButton_Click(object sender, EventArgs e)
{
var cameraCaptureTask = new CameraCaptureTask();
cameraCaptureTask.Completed += photoChooserTask_Completed;
cameraCaptureTask.Show();
}

private void photoChooserTask_Completed(object sender, PhotoResult e)
{
if(e.TaskResult == TaskResult.OK)
{
var bitmapImage = new BitmapImage();
bitmapImage.SetSource(e.ChosenPhoto);

this.image.Source = bitmapImage;
}
}

Y ya esta todo, no olvidarse de activar el ID_CAP_ISV_CAMERA en Capabilites del WMAppManifest.xml.

Agregue un comentario

Su dirección de correo no se hará público. Los campos requeridos están marcados *