private async void buttonTakePhotoClick(object sender, RoutedEventArgs e) { if (capturePreview.Source == null) { return; } // プレビューに付けた MediaCapture オブジェクトを取り出す Windows.Media.Capture.MediaCapture capture = capturePreview.Source; // 保存する画像ファイルのフォーマット (pngファイルを指定) var imageProperties = Windows.Media.MediaProperties.ImageEncodingProperties.CreatePng(); // 撮影する。撮影した画像の stream が返ってくる。 // 自前のコードで WriteableBitmap に変換 using (var memStream = new Windows.Storage.Streams.InMemoryRandomAccessStream()) { try { await capture.CapturePhotoToStreamAsync(imageProperties, memStream); // キャプチャ開始から撮影までの間に許可を取り消されると、ここで例外が出る // 「指定されたファイル ハンドルへのアクセスが取り消されました。 (HRESULT からの例外: 0x80070326)」 } catch (Exception ex) { ShowRequestMessageAsync(ex); return; } captureImage.Source = await memStream.ToWriteableBitmap(); } // 撮影する。素直にいったんファイルに落とす方法 //StorageFile file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("test.png", CreationCollisionOption.GenerateUniqueName); //try //{ // await capture.CapturePhotoToStorageFileAsync(imageProperties, file); // // キャプチャ開始から撮影までの間に許可を取り消されると、ここで例外が出る // // 「指定されたファイル ハンドルへのアクセスが取り消されました。 (HRESULT からの例外: 0x80070326)」 //} //catch (Exception ex) //{ // ShowRequestMessageAsync(ex); // return; //} //using (var stream = await file.OpenReadAsync()) //{ // var bi = new BitmapImage(); // bi.SetSource(stream); // captureImage.Source = bi; //} }