WinRT, de lucru cu un webcam

Ați văzut deja modul în care aplicațiile pentru Windows Runtime crea obiecte WriteableBitmap «la zero» sau descarcă fișiere bitmap existente. Există și alte modalități de a obține în programele bitmap-uri. De exemplu, acesta va fi prezentat mai târziu, ambele programe pot primi imagini de la alte aplicații - fie direct, fie prin intermediul clipboard.







Obțineți fotografii de la un aparat de fotografiat

În plus, aplicația poate obține o imagine cu camera încorporată. Există două soluții principale pentru această problemă; dacă sunteți gata pentru a transfera managementul Windows 8, sistemul de operare poate afișa interfața sa camera de obicei, procesul de simplu excepțional.

Utilizarea aparatului foto, trebuie să permită în mod explicit în fișierul Package.appxmanifest. În Visual Studio, deschideți fișierul, faceți clic pe fila Capabilitățile și caseta Webcam. Am făcut totul în programul EasyCameraCapture. fișier Mainpage. XAML arată astfel:

handler clic pe Eveniment Butonul creează o instanță a CameraCaptureUI de clasă. anumite nume spațiu Windows.Media.Capture și determină metoda CaptureFileAsync.

CaptureFileAsync înainte de program poate seta diverse proprietăți CameraCaptureUI pentru a selecta formatul de fișier și dimensiunea pixelilor incluse tăiere etc. apel







Pentru a reveni la aplicația EasyCameraCapture, apăsați butonul rotund cu săgeata; În acest caz, StorageFile returnat obiect este nul. Puteți salva, de asemenea, o imagine atingând sau făcând clic pe ecran, și apoi apăsați butonul de jos cu „tick“.

Când reveniți la StorageFile obiect de program se referă la un fișier care este stocat în directorul TempState magazin de aplicații locale. Codul EasyCameraCapture afișează pur și simplu conținutul fișierului.

Aplicația dvs. poate trece de control FileSavePicker pentru a salva imaginea sub controlul utilizatorului, sau de a salva imaginea automat undeva în bibliotecă imagini. Poate că aplicația este în mod special tratează imaginea stocată, iar pentru ei va fi convenabil să aloce un folder special în bibliotecă imagini. (Windows standard camera de 8 aplicații stochează imagini într-un subdirector aparat de fotografiat dosar de tip rolă de imagini.) Pentru a face acest lucru, trebuie să permită accesul la biblioteca Imagini din setările aplicației, la fel ca standard pentru Windows 8 camera app.

După ce a primit identificatorul dispozitivului, handler încărcat creează MediaCaptureInitializationSettings obiecții și o folosește pentru a inițializa MediaCapture obiect. definite în formatul domeniu. MediaCapture Obiect numit CaptureElement element de date sursă, din care un exemplar este creat în fișierul XAML.

De asemenea, am dat seama handler tasat pentru a face fotografia. clasa MediaCapture conține metode și CapturePhotoToStorageFileAsync CapturePhotoToStreamAsync. Am ales a doua soluție cu fotografiile stocate în fluxul în memorie, în care obiectul poate obține BitmapDecoder biți pixeli. Programul împrumută structura programului HSL FingerPaint pentru a crește saturația de toți pixelii, iar apoi creează obiect WriteableBitmap pentru rezultatul:

Desigur, o saturație de culoare de mare, uneori, uita infricosator :)