1.更新項目中package.appmanifest 文件,本文讓webcam和microphone可用。只需要在功能選項卡中勾選對應的框即可。如下圖所示:

如果不按照上面的設置,那么這些功能是不可以使用的,所以,確保首先設置好了。
在Windows 8中,非常好的是攝像頭的所有事情都由你來決定。也就是說,有些事情,你不得不考慮好了。首先,當你試圖訪問攝像頭時,程序將會提示用戶將使用攝像頭和麥克風,由用戶決定是否授權。
2.代碼實現
1).照片的獲取和保存
private async void Camera_Click(object sender, RoutedEventArgs e)
{
CameraCaptureUI camera = new CameraCaptureUI();
camera.PhotoSettings.CroppedAspectRatio = new Size(16, 9);//獲得圖片的寬高比例
StorageFile file = await camera.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (file != null)
{
StorageFolder folder = KnownFolders.PicturesLibrary; //將圖片保存到圖片庫中
await file.CopyAsync(folder,file.Name,NameCollisionOption.ReplaceExisting);
}/p>
p> }
這里有幾個選項可以設置(比如分辨率和計時器),然后通過tap 或者單擊屏幕,就可以觸發照相。如果我們設置了一個CroppedAspectRatio,那么將會看到畫面中將會出現四個白點,畫面中有4個白色的圓圈,表示裁減的區域。用戶可以改變這個box的size,不過指定一個CroppedAspectRatio,我們可以強制用戶選這個具有一定比例的圖片。在示例中,我使用16:9,如果1:1這是一個正方形圖片。沒有這個選項的話,用戶就不必裁減圖片,不過在bottom中的菜單選項中,有一個任意裁剪的選項:

如果用戶選擇Crop,那么用戶就可以裁減圖片的任意內容:
最后,當用戶點擊OK按鈕,將會返回一個圖片到我們程序中,這個圖片我們可以隨意使用。
2).獲得視頻和保存視頻
private async void Video_Click(object sender, RoutedEventArgs e)
{
CameraCaptureUI video = new CameraCaptureUI();
video.VideoSettings.Format = CameraCaptureUIVideoFormat.Mp4;
video.VideoSettings.AllowTrimming = true;
video.VideoSettings.MaxResolution = CameraCaptureUIMaxVideoResolution.HighestAvailable;
video.VideoSettings.MaxDurationInSeconds = 600;
StorageFile file = await video.CaptureFileAsync(CameraCaptureUIMode.Video);
if (file != null)
{
StorageFolder folder = KnownFolders.VideosLibrary;
await file.CopyAsync(folder,file.Name,NameCollisionOption.ReplaceExisting);
}
}
首先可以指定視頻的格式:MP4或WMV。一般你是看不出這些格式的區別的。MP4要比WMV使用更流行,但是MP4文件會很大,所以值得考慮一下。
其次,我將AllowTrimming設置為true,這樣用戶可以選擇根據喜好,選擇錄制視頻的片段。如下是相關截圖,用戶可以拖動白色的裁減圈來裁減視頻:

第三,我指定了一個MaxDurationInSeconds,這個值顯示用戶錄制視頻的最長時間。如果用戶錄制的視頻比這個時間長,那么用戶只能選擇30秒(或者是你指
定的一個長度)的視頻。
最后,我還指定了一個MaxResolution,這是管理用戶可以錄制的分辨率,這也決定了最終文件的大小,有下面四個可選項:

以上就完成了windows8中攝像頭的應用。
簡單的來說,從用戶攝像頭獲取相片和視頻的很容易的,并且可以定制。大多數復雜的UI都是有Windows 8直接處理了,所以,我們不用擔心與用戶的交互
問題 。