Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano, jak używać klasy CameraCaptureUI do przechwytywania zdjęć lub wideo przy użyciu interfejsu użytkownika aparatu wbudowanego w system Windows. Ta funkcja umożliwia aplikacji uzyskanie przechwyconego przez użytkownika zdjęcia lub wideo z zaledwie kilkoma wierszami kodu.
Jeśli chcesz udostępnić własny interfejs użytkownika aparatu lub jeśli scenariusz wymaga bardziej niezawodnej, niskiej kontroli nad operacją przechwytywania, należy użyć klasy MediaCapture i zaimplementować własne środowisko przechwytywania. Aby uzyskać więcej informacji, zobacz Podstawowe zdjęcia, wideo i przechwytywanie audio za pomocą programu MediaCapture.
Przechwytywanie zdjęć za pomocą klasy CameraCaptureUI
Utwórz nowe wystąpienie CameraCaptureUI, przekazując do niego właściwość AppWindow.Id okna aplikacji. Właściwość PhotoSettings umożliwia określenie pewnych ograniczeń dotyczących przechwyconego zdjęcia, w tym formatu pliku i maksymalnej rozdzielczości oraz tego, czy interfejs użytkownika umożliwia użytkownikowi przycinanie zdjęcia po jego przechwyceniu. Właściwość VideoSettings udostępnia podobne właściwości przechwytywania wideo, takie jak maksymalna rozdzielczość i czas trwania oraz czy interfejs użytkownika umożliwia użytkownikowi przycinanie wideo po jego przechwyceniu.
Wywołaj CaptureFileAsync, aby asynchronicznie uruchomić przechwytywanie UI aparatu. Użyj jednej z wartości z cameraCaptureUIMode , aby określić, czy interfejs użytkownika powinien zezwalać na przechwytywanie zdjęć, przechwytywanie wideo, czy oba te elementy. Po zakończeniu funkcji CaptureFileAsync zostanie zwrócony obiekt pliku StorageFile zawierający przechwycone zdjęcie lub wideo. Jeśli zwrócony obiekt ma wartość null, oznacza to, że użytkownik anulował operację przechwytywania lub wystąpił błąd.
W poniższym przykładzie pokazano uruchamianie aparatu CameraCaptureUI na potrzeby przechwytywania zdjęć, określając format obrazu jako PNG i wyłączając przycinanie. W tym przykładzie przechwycone zdjęcie jest ustawione jako źródło kontrolki Obraz .
var cameraCaptureUI = new CameraCaptureUI(this.AppWindow.Id);
cameraCaptureUI.PhotoSettings.Format = CameraCaptureUIPhotoFormat.Png;
cameraCaptureUI.PhotoSettings.AllowCropping = false;
// Capture a photo asynchronously
StorageFile photo = await cameraCaptureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (photo != null)
{
// Photo capture was successful
// Show the captured photo in a XAML Image control
using (IRandomAccessStream fileStream = await photo.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
// Set the image source to the selected bitmap
BitmapImage bitmapImage = new BitmapImage();
await bitmapImage.SetSourceAsync(fileStream);
iCapturedImage.Source = bitmapImage;
}
} else
{
// Photo capture failed or was cancelled
}
Przechwytywanie filmów wideo za pomocą klasy CameraCaptureUI
W poniższym przykładzie pokazano uruchamianie aparatu CameraCaptureUI na potrzeby przechwytywania wideo, określając maksymalną definicję wideo jako standardową definicję i wyłączając przycinanie. W tym przykładzie przechwycone zdjęcie jest ustawione jako źródło kontrolki MediaPlayerElement .
var cameraCaptureUI = new CameraCaptureUI(this.AppWindow.Id);
cameraCaptureUI.VideoSettings.MaxResolution = CameraCaptureUIMaxVideoResolution.StandardDefinition;
cameraCaptureUI.VideoSettings.AllowTrimming = true;
StorageFile videoFile = await cameraCaptureUI.CaptureFileAsync(CameraCaptureUIMode.Video);
if (videoFile != null)
{
// Video capture was successful
// Show the captured video in a MediaPlayerElement control
mediaPlayerElement.Source = MediaSource.CreateFromStorageFile(videoFile);
mediaPlayerElement.MediaPlayer.Play();
}
else
{
// Video capture failed or was cancelled
}
Przenoszenie przechwyconych plików multimedialnych i zmienianie ich nazw
Aparat CameraCaptureUI tworzy losowe nazwy przechwyconych plików multimedialnych, więc możesz zmienić nazwę i przenieść przechwycone pliki, aby zachować ich uporządkowaną organizację. Poniższy przykład przenosi przechwycony plik i zmienia jego nazwę.
StorageFile photo = await cameraCaptureUI.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (photo != null)
{
// Move and rename captured photo
StorageFolder destinationFolder =
await ApplicationData.Current.LocalFolder.CreateFolderAsync("ProfilePhotoFolder",
CreationCollisionOption.OpenIfExists);
await photo.CopyAsync(destinationFolder, "ProfilePhoto.jpg", NameCollisionOption.ReplaceExisting);
await photo.DeleteAsync();
}