Windows Store için geliştireceğimiz uygulama içerisinden fotoğraf ve video çekecek ve Fotoğraflar ve Videolar dizinlerine kaydedeceğiz.
Yeni oluşturduğumuz projenin Package.appxmanifest dosyasını açıyor ve Capabilities tabında yeralan Webcam, Videos Library, Pictures Library kutucuklarını işaretliyoruz. Böylece uygulamamızın çalışırken ihtiyaç duyacağı yetkileri kullanıcıdan talep edilmesini sağlıyoruz.
MainPage.xaml dosyasını açarak içerisine aşağıdaki xaml kodlarını ekleyelim ve ekranın altında bir AppBar gözükmesini, içerisinde bir adet StackPanel iki adette Button olmasını sağlayalım;
<Page.BottomAppBar> <AppBar> <StackPanel Orientation=”Horizontal” HorizontalAlignment=”Right”> <Button Style=”{StaticResource PhotoAppBarButtonStyle}” Click=”PhotoButton_Click /”> <Button Style=”{StaticResource VideoAppBarButtonStyle}” Click=”VideoButton_Click /”> </StackPanel> </AppBar> </Page.BottomAppBar></pre>
Öncelikle PhotoButton_Click methodunun içini dolduralım;
private async void PhotoButton_Click(object sender, RoutedEventArgs e) { var camera = new CameraCaptureUI(); var capture = await camera.CaptureFileAsync(CameraCaptureUIMode.Photo); if (capture != null) { var file = await KnownFolders.PicturesLibrary.CreateFileAsync(Guid.NewGuid().ToString("N") + ".jpg", CreationCollisionOption.ReplaceExisting); await capture.CopyAndReplaceAsync(file); } }
İlk olarak CameraCaptureUI sınıfından yeni bir değişken oluşturup, CaptureFileAsync() methodunu çağırıyoruz, parametre olarak CameraCaptureUIMode.Photo değerini veriyoruz, böylece fotoğraf çekmek için gerekli hazırlıklarımızı tamamlamış oluyoruz.
KnownFolders sınıfının PicturesLibrary özelliği sayesinde cihazın fotoğraf kütüphanesine erişiyoruz ve CreateFileAsync() methodunu kullanarak çekilen fotoğrafı kaydedebileceğimiz bir dosya oluşturuyoruz.
capture ismindeki değişkenin CopyAndReplaceAsync() methodu sayesinde webcam kullanılarak çekilen resmi kaydediyoruz.
Video çekimi yapacak VideoButton_Click methodunun içi PhotoButton_Click methoduna çok benziyor;
private async void VideoButton_Click(object sender, RoutedEventArgs e) { var camera = new CameraCaptureUI(); var capture = await camera.CaptureFileAsync(CameraCaptureUIMode.Video); if (capture != null) { var file = await KnownFolders.VideosLibrary.CreateFileAsync(Guid.NewGuid().ToString("N") + ".wmv", CreationCollisionOption.ReplaceExisting); await capture.CopyAndReplaceAsync(file); } } Üç önemli değişiklik var; * *camera* değişkeninin *CaptureFileAsync()* methoduna parametre olarak *CameraCaptureUIMode.Photo* değeri yerine *CameraCaptureUIMode.Video* değerini veriyoruz * *KnownFolders* sınıfının *PicturesLibrary* özelliği yerine *VideosLibrary* özelliğini kullanıyoruz * *CreateFileAsync()* methoduna parametre olarak verdiğimiz dosya isminin uzantısını jpg yerine wmv yapıyoruz Böylece **Windows 8** uygulaması içerisinden hem fotoğraf hem video çekebilir ve uygun dizinlere kaydedilmesini sağlayabiliriz.
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484