IronPython Silverlight MultiScaleImage

Cumartesi, 1 Ağustos 2009 07:39 by ikivanc
IronPython ile Silverlight bileşenlerinden MultiScaleImage ‘i inceleyeceğiz. MultiScaleImage temelinde deepzoomla üretilen projelerin silverlight içerisinde çalıştırılmasını sağlayan araçtır.
 

Deepzoom teknolojisi bildiğiniz gibi fotoğraf ve resimleri izlemek için kullanılan, çok hızlı zoom yapıp görüntünün istediğimiz yerini çok hızlı bir şekilde büyütüp daha net görüntüyü görmemize yardımcı olur. Deep zoom ile çok yüksek çözünürlüklü fotoğrafların detaylarına bile çok mükemmel bir şekilde erişebiliriz.



Bu tür görüntüleri oluşturmak için Deep Zoom Composer aracını kullanıyoruz. Deep Zoom Composer da 3adımdan sonra oluşturduğumuz projeyi yayınlıyoruz. Import kısmında fotoğraflarımızı projeye alıyoruz. Daha sonra Compose bölümünde bunları isteğimize göre yerleştiriyoruz. Export bölümünde ise Deep Zoom projesini hangi türden yayınlamak istediğimizi seçiyoruz.


Export işlemini Custom sekmesinden Silverlight Deep Zoom seçeneği ile yayınlıyoruz. Bu şekilde yayınladıktan sonra projemiz geliştirilecek ve asıl MultiScaleImage ile kullanacağımız dosyayı oluşturacak. Proje klasörünün içerisinde bulunan “GeneratedImages” klasörünün içerisindeki “dzc_output.xml” dosyası. Bu dosyayı kullanarak Silverlight uygulamamızın deepzoom da oluşturulan silverlight projeye erişmesi sağlanacak, bir nevi kaynak belirtecek.

Şimdi de bu bileşeni kullanarak bir uygulama geliştirelim. Daha önceden deepzoom ile geliştirmiş olduğum Fotoğraflarımın bulunduğu bir kompozisyon’u silverlight ile kullanalım.


http://www.ibrahimkivanc.com/denemeler/fotoroman adresinde bulunan deepzoom projesini IronPython ile oluşturalım.

app.xaml
    1 <UserControl x:Class="System.Windows.Controls.UserControl"
    2   xmlns="http://schemas.microsoft.com/client/2007"
    3   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    4 
    5   <Grid x:Name="LayoutRoot" Background="Black">
    6     <MultiScaleImage x:Name="deep" Margin="8,63,61,97" Source=
"http://www.ibrahimkivanc.com/denemeler/fotoroman/GeneratedImages/dzc_output.xml"/>
    7     <Button x:Name="Button_zoom_in" Height="28" HorizontalAlignment="Left" 
Margin="29,17,0,0" VerticalAlignment="Top" Width="88" Content="Zoom +"/>
    8     <Button x:Name="Button_zoom_out" Height="28" HorizontalAlignment="Left" 
Margin="121,17,0,0" VerticalAlignment="Top" Width="80" Content="Zoom -"/>
    9   </Grid>
   10 </UserControl>

app.py
    1 from System.Windows import Application
    2 from System.Windows.Controls import UserControl
    3 
    4 scene = Application.Current.LoadRootVisual(UserControl(), 'app.xaml')
    5 
    6 def deep_Zoom_in(sender, args):
    7     global scene
    8     scene.deep.ZoomAboutLogicalPoint(3, .5, .5)
    9 
   10 def deep_Zoom_out(sender, args):
   11     global scene
   12     scene.deep.ZoomAboutLogicalPoint(0.5, .5, .5);
   13 
   14 scene.Button_zoom_in.Click+=deep_Zoom_in
   15 scene.Button_zoom_out.Click+=deep_Zoom_out


Görüldüğü gibi silverlight uygulamamızda 2 Buttonla MultiScaleImage ekledik. MultiScaleImage bileşenini ve onun source kısmına bizim projemizin kaynak dosyasını belirttik. Arkada çalışan IronPython kodunda ise, Button “Zoom +” ve “Zoom -” tıklandığında oluşacak efektleri belirledik. “Zoom +” tıklandığında zoom yapacak ve
“Zoom -” tıklandığı zaman da uzaklaşacak.

    6 def deep_Zoom_in(sender, args):
    7     global scene
    8     scene.deep.ZoomAboutLogicalPoint(3, .5, .5)
    9 
   10 def deep_Zoom_out(sender, args):
   11     global scene
   12     scene.deep.ZoomAboutLogicalPoint(0.5, .5, .5);
   13 
   14 scene.Button_zoom_in.Click+=deep_Zoom_in
   15 scene.Button_zoom_out.Click+=deep_Zoom_out

Bu eventleri da buttonlara atadıktan sonra projemizi sorunsuzca çalıştırabiliriz.



Projenin Kaynak kodlarına yukarıdaki klasörden erişebilirsiniz.
 
Hepinize Kolay gelsin. Sorularınızı ve takıldığınız yerleri ik@ibrahimkivanc.com mail adresime iletebilirsiniz.

Makalenin PDF Hali için > 15 - IronPyton Silverlight MultiScaleImage

Yorumlar

Yorum ekle


 

  Country flag

biuquote
  • Yorum
  • Canlı önizleme
Loading