Windows 8 CameraCaptureUI Uygulaması
- Sevdanur GENC

- Sep 22, 2012
- 2 min read
Microsoft, Windows 8 için Windows Runtime adında yeni bir framework tasarlamıştı. İçeriğinde mevcut .Net geliştiricileri için yapılan özellikler bir yana diğer özel bir tarafı ise Metro Style uygulamalarının tasarlanabilmesidir. Bu yeni framework bilindiği üzere VB, C#, C++ ve JavaScript 'i hedeflemektedir.
Şimdi dilerseniz C# ve XAML kullanarak bir Metro Style uygulaması geliştirelim.
Camera API uygulaması yapabilmemiz için öncelikle Microsoft Visual Studio 2012 RC'de yeni bir metro style projesi oluşturabilmemiz için File->New->Project lokasyonunu kullanıyoruz.
Karşımıza gelen pencereden, sol taraftaki templates sekmesinin altında bulunan Visual C# adı altında Windows Metro Style seçeriz. Sağ tarafta Blank App(XAML) 'i seçtikten sonra projenize isim verebilirsiniz.
Oluşturulan projenin içeriği sağ taraftaki solution explorer'da görüyoruz. Buradan MainPage.Xaml e isterseniz sol tarafta bulunan toolbox'tan sürükleyip tasarımımızın üzerüne bırakarak isterseniz XAML tarafında kod yazarak uygulamanızın görünümünü tasarlayabilirsiniz.
Tasarımımızda kullanacağımız Image ve Button kontrolleri ile ilgili XAML kodları aşağıdadır.
MainPage.XAML Kaynak Kodlari ;
<Page
x:Class="WebCamApiApp.MainPage"
IsTabStop="false"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:WebCamApiApp"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Button Content="Fotoğraf Çek" HorizontalAlignment="Left" Height="86" Margin="549,672,0,0" VerticalAlignment="Top" Width="276" Click="BtnFotografCek_Click"/>
<Image x:Name="Photo" HorizontalAlignment="Left" Height="628" Margin="75,39,0,0" VerticalAlignment="Top" Width="1215"/>
</Grid>
</Page>
Şimdi arayüzümüzün arka planda çalıştıracağı kaynak kodlarını yazalım. BtnFotografCek_Click event'ına ait kodları yazmadan önce gerekli olan using'leri yazalım.
using Windows.Media.Capture;
using Windows.Storage;
using Windows.UI.Xaml.Media.Imaging;
Kameramızı açabilmemiz için gerekli olan kodları yazarken kullanacağımız camera api 'nin yardımı ile yakaladığımız görüntüyü BitmapImage 'de gösterebileceğiz. BtnFotografCek_Click event'ının kodları;
MainPage.XAML.CS Kaynak Kodlari ;
async private void BtnFotografCek_Click(object sender, RoutedEventArgs e)
{
var ui = new CameraCaptureUI();
ui.PhotoSettings.CroppedAspectRatio = new Size(16, 9);
var file = await ui.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (file != null)
{
var bitmap = new BitmapImage();
bitmap.SetSource(await file.OpenAsync(FileAccessMode.Read));
Photo.Source = bitmap;
}
}
Yazılan kodları inceleyecek olursak; .Net 4.5 ile birlikte gelen özellikler arasında Asenkron Programlama bulunmaktadır. Async anahtar kelimesinin kullanımına dikkat ediniz. Bu yöntem sayesinde senkronizasyon eylemleri gerçekleştiriyor olacağız. Async - Await, C# dili için yeni bir özelliktir.
Projemize Webcam yeteneklerini ekleyelim.
Sağ tarafta Solution Explorer penceresinde bulunan Package.appxmanifest 'i tıklıyoruz.
Karşımıza gelen pencerede Capabilities sekmesinden Webcam 'i seçiyoruz.
Package.appxmanifest penceresini kapatıyor ve son yapmış olduğumuz bu değişikliği kaydetmiş oluyoruz.
Uygulamamızı Local Machine ile çalıştırıyoruz.
Uygulama çalıştığı anda tasarladığımız ekran karşımıza geliyor.
Fotoğraf Çek Butonunu clicklendikten sonra Karşımıza WebCam'imizi kullanabilmemiz için bir onay mesajı geliyor.
Allow ile izin verdikten sonra WebCam'de ki görüntümüz ekrana gelmektedir. Artik fotografinizi WebCam'inizin yardimi ile cekebilirsiniz. Keyifli Calismalar Dilerim.
Comments