Reputation: 617
I want to use CameraCaptureTask on WP7 in order to get image from phone and manipulate it. My code is:
CameraCaptureTask cameraCaptureTask;
public MainPage()
{
InitializeComponent();
try
{
cameraCaptureTask = new CameraCaptureTask();
cameraCaptureTask.Completed += new EventHandler<PhotoResult>(cameraCaptureTask_Completed);
}
catch (System.InvalidOperationException ex)
{
MessageBox.Show(ex.Message);
}
}
private void button1_Click(object sender, RoutedEventArgs e)
{
try
{
cameraCaptureTask.Show();
}
catch (System.InvalidOperationException ex)
{
MessageBox.Show(ex.Message);
}
}
void cameraCaptureTask_Completed(object sender, PhotoResult e)
{
MessageBox.Show("event: " + e.TaskResult.ToString());
if (e.TaskResult == TaskResult.OK)
{
BitmapImage bmp = new BitmapImage();
bmp.SetSource(e.ChosenPhoto);
image1.Source = bmp;
}
}
}
The problem is that every time i click button1, the event is raised but the value is TaskResult.Cancel instad of OK. Moreover, in the phone the camera is not shown.
Any idea? Thanks
Upvotes: 6
Views: 1562
Reputation: 376
You can try this...
private void button1_Click(object sender, RoutedEventArgs e)
{
try
{
cameraCaptureTask = new CameraCaptureTask();
cameraCaptureTask.Completed += new EventHandler<PhotoResult>(cameraCaptureTask_Completed);
cameraCaptureTask.Show();
}
catch (System.InvalidOperationException ex)
{
MessageBox.Show(ex.Message);
}
}
void cameraCaptureTask_Completed(object sender, PhotoResult e)
{
MessageBox.Show("event: " + e.TaskResult.ToString());
if (e.TaskResult == TaskResult.OK)
{
BitmapImage bmp = new BitmapImage();
bmp.SetSource(e.ChosenPhoto);
image1.Source = bmp;
}
}
Upvotes: 1
Reputation: 1880
Try this.
void ctask_Completed(object sender, PhotoResult e)
{
if (e.TaskResult == TaskResult.OK && e.ChosenPhoto != null)
{
//Take JPEG stream and decode into a WriteableBitmap object
App.CapturedImage = PictureDecoder.DecodeJpeg(e.ChosenPhoto);
//Collapse visibility on the progress bar once writeable bitmap is visible.
progressBar1.Visibility = Visibility.Collapsed;
//Populate image control with WriteableBitmap object.
ImageMain.Source = App.CapturedImage;
}
}
Upvotes: 0