Ahmet Çığşar | WPF (Windows Presentation Foundation) Giriş
332
post-template-default,single,single-post,postid-332,single-format-standard,qode-quick-links-1.0,ajax_fade,page_not_loaded,,qode-theme-ver-11.0,qode-theme-bridge

WPF (Windows Presentation Foundation) Giriş

WPF (Windows Presentation Foundation) Giriş

WPF (Windows Presentation Foundation) Nedir?

WPF, Microsoft tarafından geliştirilen ve DirectX kütüphanelerini kullanan kullanıcı arayüzü platformudur. İlk olarak 2003 yılında kod adı Avalon olarak Professional Developer Conference etkinliğinde .NET Framework 3.0 ile birlikte tanıtılmıştır.

WPF, XAML ( eXtensible Application Markup Language ) dili kullanılarak geliştirilir. XAML dili XML’den türetilmiş bir işaretleme dilidir. Aşağıda örnek olması açısından bir pencere ve bu penceri oluşturan XAML kodlarını görmektesiniz.

WPF örnek pencere

WPF ile oluşturulmuş; label, button ve textbox kontrollerinden oluşan basit bir pencere.

<Window
	xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
	x:Class="WpfApplication2.MainWindow"
	x:Name="Window"
	Title="ahmetcigsar.com"
	Width="370" Height="210">

	<Grid x:Name="LayoutRoot">
		<Grid.ColumnDefinitions>
			<ColumnDefinition Width="0.353*"/>
			<ColumnDefinition Width="0.508*"/>
			<ColumnDefinition Width="0.139*"/>
		</Grid.ColumnDefinitions>
		<Button Content="Gönder" Margin="1.054,114,72.74,0" VerticalAlignment="Top" Grid.Column="1"/>
		<Label Content="Adınız : " Margin="19,17,31.233,0" VerticalAlignment="Top" Height="23.92"/>
		<TextBox HorizontalAlignment="Left" Margin="-27.233,19,0,0" TextWrapping="Wrap" Text=" " VerticalAlignment="Top" Width="134.287" Grid.Column="1"/>
		<Label Content="Soyadınız : " Margin="19,55,31.233,0" VerticalAlignment="Top" Height="23.92"/>
		<TextBox HorizontalAlignment="Left" Margin="-27.233,57,0,0" TextWrapping="Wrap" Text=" " VerticalAlignment="Top" Width="134.287" Grid.Column="1"/>
	</Grid>
</Window>

Yukarıdaki kodları ve pencereyi sadece fikir edinmeniz için verme gereği duydum. İlerleyen yazı dizilerinde XAML’ı zaten enine boyuna ele alacağız.

WPF’ten Önce ve WPF’ten Sonra

  • WPF’ten önce, uygulamalarımızda görüntü ve sesler GDI/GDI+ kütüphanelerini kullanarak yapılmaktaydı. Bu durum görüntüleme, çizim ve ses işlemlerinin işlemci tarafından yapılması demekti ve bu durum işlemciye ekstra yük getirdiğinden ciddi performans kaybı demekti. Özellikle bazı işlemlerde (pixel pixel işlemlerde) işlemcinin öfkelenip ısındığına şahit olunmuştur.
    WPF ile, uygulamalarımız artık GDI/GDI+ kütüphanesinden kurtularak DirectX altyapısını kullanama başlamıştır. Peki bu ne demek? Yani artık uygulamanın görüntüleme, çizim ve ses işlemlerini ana işlemci değil ekran kartının işlemcisi (GPU) tarafında yapması anlamına geliyor.
  • WPF’ten önce, Windows uygulamalarında kullanıcı arayüzünün tasarımı da yazılımcıya aitti ve uygulamanın arayüzü ve yazılımsal tarafı birbirinden ayrı değildi.
    WPF ile, Windows form uygulamalarında kullanıcı arayüzü bir tasarımcının elinden geçme şansı buldu. Buna bağlı olarak uygulamalar daha esnek, daha kullanışlı ve görsel açıdan daha güzel tasarlanma şansı buldu. Ayrıca bu durum yazılımcının projesine daha fazla zaman ayırabilmesine ve projelerin işbölümü yapılabilmesini artırmıştır.
  • WPF’ten önce, Windows form uygulamalarını diğer normal programlar gibi sadece işletim sistemine kurarak kullanabiliyorduk.
    WPF ile, artık uygulamalarımızı XBAP (XAML Browser Application) ile tarayıcı tarafında çalıştırma imkanımız oldu. XBAP’i  enine boyuna ilerleyen yazılarımda ele alacağım.
  • WPF’ten önce,  Windows form uygulamalarında kullandığımız kontroller (button, textbox, listbox…) boyut, arkaplan rengi gibi belirli şeyleri özelleştirebiliyorduk. Olağan dışı özelleştirmeler veya olağan dışı tasarımlar yapmak istediğimizde  ekstra grafik kütüphanelerine veya ekstra imaj dosyalarına ve efektler için yine bazı .dll leri dahil etmemiz gerekiyordu.
    WPF ile, uygulamada kullanacağımız kontroller üzerinde daha fazla özelleştirme imkanı buluyoruz. Üstelik daha hızlı bir şekilde arayüz geliştirme imkanımız oluyor.
  • WPF’ten önce, Windows form uygulamalarımız bitmap tabanlı görüntüleme yaptığından çözünürlükten bağımsız  (resolution independence) yapıda değildi. Ne demek bu? Şöyle: Uygulamamız yüksek çözünürlüğe sahip ekranlarda pikselleşme sorunu çıkarabiliyordu. Örneğin 1280×800 çözünürlükte 21″ bir ekranda düzgün görüntülenirken 102″ bir ekranda uygulamanız pikselleşmeler çıkartabiliyordu. Bu durum bir fotoğrafı fazla yakınlaştırdığınızda kare kare piksellerin çıkması gibi düşünebilirsiniz.
    wpf_resolation_depend
    WPF ile, arayüzümüz artık [tooltip text=”resolution independence” gravity=”n”]Çözünürlükten bağımsız.[/tooltip] ve vektörel bazlı olduğundan görüntüyü 102″ değil 10002″ 🙂 ekranda dahi gösterseniz pikselleşme olmadan ve görüntü kalitesinden asla ödün vermeden görüntüleyebilirsiniz.

WPF, XAML dilini kullanarak tasarlansada tasarım süresini kısaltmak ve tasarım işlemini pratikleştirmek için Microsft, Expression Studio ailesini çıkarmıştır.  WPF öğrenme aşamasında Expression Studio ile çalışmanızı tavsiye ederim çünkü yaptığınız tasarımları kod editörü tarafından bakarak tasarımın koda dökülmüş halini görebilir ve XAML dilini daha hızlı kavrayabilirsiniz.

Expression Studio Ailesi ile Tanışın

Expression Blend : WPF ve Silverlight tasarımları için kullanılır. Expression Blend ile Visual Studio proje dosyaları açabilir ve arayüz düzenlemelerini senkronize yapabilirsiniz. Harika bir şey değil mi? Ayrıca,  Adobe Photoshop ve Adobe Illustrator dosyalarını WPF projenize import edebilirsiniz. Bu da harika bir şey. Böylece WPF uygulamalarımıza mükemmel grafik ve vektör ögeleri ekleyebilirsiniz.

Expression Web : Dreamweaver’a benzer bir tür web editörü diyebiliriz.

Expressin Web SuperPrewiev : Adından da anlaşılacağı üzere web tasarımlarımızda öngörüntü alabilmemizi sağlayan bir uygulamadır. En büyük özelliği aynı anda farklı tarayıcılarda tasarımlarımızı test etme imkanı sunmasıdır.

Expression Design : Bitmap ve vektörel tabanlı dosyalar üzerinde işlemler yapmamıza olanak sağlayan bir uygulamadır. Hazırladığımız vektörel çizimleri sayısal veriler olarak alıp farklı platformlarda kullanabilmemiz programın hoş taraflarından.

Expression Encoder : Videolarımızı internet ortamında yayınlamadan önce boyutunda iyileştirmeler, video üzerinde kesme, birleştirme, ekleme gibi işlemleri yapmamızı sağlayan güzel bir uygulamaladır.

WPF ve XAML’a girişimizi yaptık, ilerleyen zamanlarda uygulama ve örneklere geçmeyi planlıyorum. İlk yazıda direkt  kodlarla ve uygulamalarla boğuşmaktansa önce olayın genel kültürünü ve ne ne değildir biraz teorik bilgi vermeyi daha doğru buluyorum.

Başka bir makalede görüşmek dileğiyle.

12 Yorum Var
  • Elmacık Bilgisayar
    11:40h, 19 Aralık Cevapla

    konuyla ilgisiz olacak ama makalenizi dün yazmışsınız ben bugün google aramalarında sizi bulabildim nasıl oldu bu?? seo hakkında da bir şeyler paylaşmanız lazım :))

    • Ahmet Çığşar
      13:50h, 19 Aralık Cevapla

      Google artık eskisi gibi siteleri tekrar ziyaret etmesi bir hafta – on gün sürmüyor. Yeni bir içerik yazıp Google sunucularına ping gönderdiğinizde sayfanızın Google da yer alması ortalama 15 dk sürüyor. Şöyle bir durum var peki ilkgün nasıl oluyorda ilk aramalarda çıkıyorum. Bunun için yaptığım ekstra bir şey yok hatta daha az şey var örneğin bu makale için sadece 7 keyword ve 4 etiket kullandım. Geçmişte SEO ile fazlaca ilgilendim ama bu konuda yazmak benim işim değil diye düşünüyorum.

  • Ahmet Şevket Demirci
    19:10h, 01 Ocak Cevapla

    neden wpf soruma cevap ararken fazlasını buldum. harika bir yazı teşekkürler.

  • Cengiz Akarsu
    18:11h, 22 Temmuz Cevapla

    Başarılı ve açık anlatımınız için tebrikler, teşekkürler

  • Elif Şimşek
    09:08h, 25 Eylül Cevapla

    Yeni başlayanlar için mükemmel bir paylaşım olmuş emeğinize sağlık. Öğretici ve akıcı devamını bekliyorum.

  • mehmet
    13:59h, 06 Ocak Cevapla

    merhaba hocam.Wpf ile bir proje geliştirmem gerekiyor.Öğrencilerin 42 krediye kadar ders seçip listeleyecek bir proje olacak.Yeni olduğum için yardımlarınıza ihtiyacım var.bir yol gösterirmisiniz ?

    • Ahmet Çığşar
      14:08h, 13 Ocak Cevapla

      Mehmet kardeşim WPF programın sadece arayüz tarafı yani asıl işlemi yapacak olan kod kısmı C# veya VB.NEt gibi diller kullanarak arkaplanda yapılması gerekiyor. Yapmak istediğin zor şey değil temel programlama bilgisine sahip olan biri bile yapabilir sana tavsiyem biraz araştırma ve okuma takıldığın yerde sorarsan yardımcı olabilirim.

  • uğur öztekin
    11:58h, 11 Mart Cevapla

    Çok teşekkürler ne güzel anlatmışsınız.

  • Semih
    20:04h, 23 Eylül Cevapla

    Ahmet hocam eline diline sağlık çok verimli bir anlatım olmuş. Şuan ASP.NET te yürüttüğüm projeyi WPF ye çevirmeyi düşünmüyorum değil. Aradığımdan fazlasını buldum. Tekrar eline sağlık. Bu arada Microsoft un sitesinde bile bu kadar bilgi yok 🙂

  • Ali ihsan
    09:14h, 05 Kasım Cevapla

    Elinize sağlık güzel bir yazı olmmuş

Yorum Yapın