MehmetX.com

Windows Phone 7.1 Arkaplan Olarak Kamera Goruntusu Kullanmak

7.11.2011 15:58:15 | Okunma Sayisi : 8287 | Yorum Sayisi : 1

Windows Phone için geliştirdiğimiz uygulamanın arkaplan görüntüsü olarak telefonun kamerasını kullanan bir uygulama geliştireceğiz.

Visual Studio 2010 ile yeni bir Windows Phone Application açalım. İsim olarak wp_camera_background verdim. 

Açılan uygulamanın MainPage.xaml içerisindeki Name' i LayoutRoot olan Grid' i ve bu Grid' in içerisindeki herşeyi silelim. Sildikten sonra MainPage.xaml' ın kodları aşağıdaki gibi olmalıdır.

 

<phone:PhoneApplicationPage 
    x:Class="wp_camera_background.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    shell:SystemTray.IsVisible="True">
 
</phone:PhoneApplicationPage>

 

Aradaki boş alana bir Rectangle ekleyelim. Bu Rectangle' ın Fill özelliğine aşağıdaki gibi VideoBrush ekleyelim.

    <Rectangle>


        <Rectangle.Fill>
            <VideoBrush x:Name="videoBrush1" />
        </Rectangle.Fill>
    </Rectangle>

 

Telefonun orientation' ı değiştiğinde kamera görüntüsünün de orientation' a uyumlu olarak değişmesini de sağlayalım. Bunun için SupportedOrientation özelliğini PortraitOrLandscape yapalım. Son olarak ekranın en üstündeki ufak siyah alanı kapatmak için de PhoneApplicationPage' in özelliklerinden shell:SystemTray.IsVisible özelliğini False yapalım. MainPage.xaml' ın son hali aşağıdaki gibi olmalıdır.

 


<phone:PhoneApplicationPage 
    x:Class="wp_camera_background.MainPag e"
    xmlns="http://schemas.microsoft.com /winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com /winfx/2006/xaml"
    xmlns:phone="clr- namespace:Microsoft.Phone.Controls;assembly=Microsoft. Phone"
    xmlns:shell="clr- namespace:Microsoft.Phone.Shell;assembly=Microsoft.Pho ne"
    xmlns:d="http://schemas.microsoft.com /expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformat s.org/markup-compatibility/2006"
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800"
    FontFamily="{StaticResource PhoneFontFamilyNormal< span style="color:blue;">}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations< span style="color:blue;">="PortraitOrLandscape" Orientation="Portrait"
    shell:SystemTray.IsVisible="False">
 
    <Rectangle>
        <Rectangle.Fill>
            <VideoBrush x:Name="videoBrush1" />
        </Rectangle.Fill>
    </Rectangle>
</phone:PhoneApplicationPage>

Şuan telefonun ekranına tamamen kaplayacak bir Rectangle içerisine bir VideoBrush eklemiş olduk. Telefonun orientation' ı değiştirildiğinde içerideki Rectangle' da otomatik olarak yön değiştirecek ve ekranın üst tarafındaki tray alanını gizledik.

Uygulama açıldığı anda Rectangle içerisindeki VideoBrush' a telefonun kamera görüntüsünü vereceğiz. Bunun için MainPage.xaml.cs dosyasını açalım.

using' lere aşağıdaki namespace' i ekleyelim

 

using Microsoft.Devices;

MainPage isimli constructor içerisinde Loaded event' ini oluşturalım. MainPage_Loaded metodunun içerisini aşağıdaki gibi düzenleyelim

 

namespace wp_camera_background
{
    public partial class MainPage : PhoneApplicationPage
    {
        public MainPage()
        {
            InitializeComponent();
            Loaded += new RoutedEventHandler(MainPage_Loaded);
        }
 
        void MainPage_Loaded(object sender, RoutedEventArgs e)
        {
            PhotoCamera cam = new PhotoCamera();
            videoBrush1.SetSource(cam);
        }
    }
}

Metodun ne yaptığına bakacak olursak:

  • PhotoCamera class' ından cam isimli bir nesne oluşturduk (instance aldık).
  • videoBrush1' in source' una (kaynak) cam isimli nesneyi verdik.

Uygulamayı çalıştırdığımızda emulatorde kamera desteği olmadığı için, kamera görüntüsünü temsil eden beyaz bir zemin kenarlarında hareket eden bir kutu göreceğiz, eğer telefon üzerinde çalıştırırsak tam ekranda açılan uygulamamızın kamerayı kullandığını göreceksiniz. 

Örnek uygulamanın kaynak kodlarını buradan indirebilirsiniz.


1 Yorum

Mert 16.02.2012 12:49:39
Kamera görüntüsü geliyor ama LG Optimus ile uygulamayı test ettiğimde görüntü yana yatık görünüyor?



page-top