WinRT, работа с уеб камера

Вие вече сте виждали как приложенията Windows Runtime създават обекти WriteableBitmap «нула» или свалят съществуващи растерни файлове. Има и други начини да се растерни изображения в програмите. Например, тя ще бъде показана по-късно, и двете програми могат да получат изображения от други приложения - директно или чрез клипборда.







Вземете със снимки от фотоапарат

Освен това, приложението може да се получи картина с вградената камера. Има две основни решения на този проблем; ако сте готови да прехвърли управлението на Windows 8, операционната система може да показва обичайната си камера интерфейс, процесът на изключително проста.

Използване на камерата, трябва изрично да се даде възможност в Package.appxmanifest файл. В Visual Studio, отворете файла, щракнете върху раздела Възможности и уеб камера кутията. Направих го в програма EasyCameraCapture. Главна страница на файла. XAML изглежда така:

Кликнете събитие манипулатор на бутона създава инстанция на CameraCaptureUI клас. някои имена пространство Windows.Media.Capture и причинява метод CaptureFileAsync.

CaptureFileAsync преди да се обадите програма може да настроите различни свойства CameraCaptureUI за да изберете формата на файла и размера на пикселите включените резитба, и т.н.







За да се върнете към приложение EasyCameraCapture на, натиснете бутона със стрелката кръг; В този случай StorageFile върна обект е нула. Можете също така да запазите изображение чрез докосване или като кликнете върху екрана и след това натиснете бутона отдолу с "тик".

Когато се върнете към StorageFile на програмата обект се отнася за файл, който се съхранява в директорията TempState магазин за локално приложение. EasyCameraCapture код просто показва съдържанието на файла.

Вашата кандидатура може да премине FileSavePicker контрол за запазване на изображението под контрола на потребителя, или запазване на изображението автоматично някъде в библиотеката Pictures. Може би е приложението изрично третира съхранява изображението и за тях това ще бъде удобно да отпусне специална папка в библиотеката Pictures. (Стандартните приложения за Windows 8 камера съхранява изображенията в поддиректория Camera Roll папка Снимки.) За да направите това, вие трябва да дават възможност за достъп до библиотеката Снимки от настройките на приложението, както прави стандартния Windows 8 приложения камерата.

След получаване на идентификатор на устройството, Loaded манипулатор създава MediaCaptureInitializationSettings се противопоставят и да го използва, за да се инициализира MediaCapture обект. дефинирани във формат област. MediaCapture Object назначен CaptureElement показател за данни източник, копие от който е създаден във файла XAML.

Осъзнах също Подбрани манипулатор за да направите снимката. MediaCapture клас съдържа методи и CapturePhotoToStorageFileAsync CapturePhotoToStreamAsync. Аз избрах второто решение със снимките се съхраняват в потока в паметта, в които обектът може да получи BitmapDecoder бита пиксела. Програмата заема структурата на програма HSL FingerPaint да увеличи наситеността на всички пиксела, а след това създава WriteableBitmap обект за резултата:

Разбира се, по-висока наситеност на цветовете понякога изглежда страшно :)