Çizgi Roman Dünya Klasikleri

Cuma, 14 Ağustos 2009 15:55 by ikivanc
NTV yayinlarından yeni çıkan çizgiroman dünya klasikleri gerçekten mükemmel. Orjinal metne bağlı bir şekilde, çizgi roman halindeki baskıları çok süper. ikisini de bir hışımda okudum.


Shakespeare'in Macbeth'i ve Kafka'nın Dava'sı ilk çıkan kitaplar. İkisininde çizimleri inanılmaz güzel ve çok kaliteli bir çizim tekniği ile ortaya konulmuş. İlerleyen günlerde bu serinin devamı da gelecek.

Bu sayede belki de dünya klasikleri pek çok insana ulaşacak. Eğer yazın güzel bir değişiklik yapmak istiyorsanız kesinlikle deneyin derim. 

Tags:   ,
Categories:   Kola Molası
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed

IronPython Listeler

Salı, 11 Ağustos 2009 14:35 by ikivanc
Listeler Genellikle aynı özellikteki nitelikleri sıralamaya yarayan ve tekrardan ulaşmamıza yardımcı olan kalıplarlardır. İlk örneğimizde NBA basketbol takım kadrosu oluşturalım ve bu kadro üzerinde ironpython kodlarını deneyerek ne işe yardığını görelim.

>>> kadro=['Bryant','McGrady','Howard','Hidayet']    
#kadroyu ilk önce tanımladık, 4 elemanlı bi dizi olarak
>>> kadro      #burada kadrodaki elemanları görmek istedik
['Bryant', 'McGrady', 'Howard', 'Hidayet'] 

Aynı şekilde ekrana yazdırmak için de print komutunu kullanabiliriz.

>>> print kadro
['Bryant', 'McGrady', 'Howard', 'Hidayet']

İndex’ler listedeki elemanların sıra numarasıdır. Bu numaralar sayesinde tanımlanır ve bir işlev için çağrılması daha da kolaylaşır. Fakat dikkat edilmesi gereken en önemli nokta ilk index her zaman 0’dır örneğin; Dizinin ilk elemanı olan Bryant’ın index’i ‘0’dır. 2. Eleman olan McGrady’nin index’i ise 1dir.

>>> kadro[0]  #Listede ilk sırada yer alan eleman gelecektir.
'Bryant' 
 
>>> kadro=kadro + ['Memo']   #Şimdide kadroya oyuncu ekleyelim
>>> kadro
['Bryant', 'McGrady', 'Howard', 'Hidayet', 'Memo'] 

Ekleme işlemini bu şekilde yapabildiğimiz gibi append() komutunu da kullanarak yapabilir. Bu uygulamayı ileride göreceğiz.
Listede Belli Aralıkları Seçmek
Listedeki istediğimiz ilk konum ile son konuma kadar tüm elemanları çağırmanıza yardımcı olur.

>>> kadro[1:3]          
# [1:3]’ün anlamı dizinin 2. Elemanı ile 3. Elemanını çağırır.
['McGrady', 'Howard']
 
kadro[:3]    #[:3]’ün anlamı ise 5. Elemandan önceki elemanları çağır anlamındadır.
['Bryant', 'McGrady', 'Howard'] 
 
>>> dir(kadro)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', 
'__delslice__', '__doc__', '__eq__', '__ge__', '__getattribute__', 
'__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__',
'__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__','__repr__', '__reversed__', 
'__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', 'append',
 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] 


Yukarıdaki tüm komutlar dizilerde kullanılabilir, gelin hepbirlikte dizilerde en çok kullanacağımız komutları birlikte inceleyelim.
Dizilere ait komutları sırasıyla ne işe yaradıklarını inceleyelim.

append() komutu
Python dilinde en temel olay Nesne.metot şeklindeki kalıptır. Python nesne tabanlı bir dil olduğu için yazdığımız her şey bir nesnedir ve nesnelerinde metotları vardır. Şimdide örnek kullanımını görelim. Append metoduna gelince, diziye eleman ekleme kısmında bahsettiğimiz gibi, diziye sonundan eleman ekler.

>>> kadro.append('Jermaine')
>>> kadro
['Bryant', 'McGrady', 'Howard', 'Hidayet', 'Memo', 'Jermaine']

-count() komutu
count komutu aranan elemanı listede varsa kaçtane olduğunu gösterir. Eğer yoksa 0 değerini gönderir.

>>> kadro.count('Bryant')
1 
>>> kadro.count('Shaq') 
0
#kadroda arattığımız eleman yoksa 0 sonucu döner.

-extend() komutu
Diziye eleman eklemek için kullanılır. Eleman dizinin sonuna eklenir.
>>> kadro.extend(['Lebron'])
>>> kadro
['Bryant', 'McGrady', 'Howard', 'Hidayet', 'Memo', 'Jermaine', 'Lebron'] 

kadro=kadro+ [‘…’] işleminin aynısını görür.

-index() komutu
Elemanın listedeki indexini belirler.

>>> kadro.index('Lebron')
6 
>>> kadro.index('McGrady')
1

-insert()komutu
Belirtilen elemanı belirtilen indexe ekler ve sonraki elemanların indexi bir artar.

>>> kadro.insert(0,'Carmelo')
>>> print kadro
['Carmelo', 'Bryant', 'McGrady', 'Howard', 'Hidayet', 'Memo', 'Jermaine', 'Lebron'] 


-pop()komutu
Listeden son elemanı çıkarır.

>>> kadro.pop()
'Lebron'
>>> kadro
['Carmelo', 'Bryant', 'McGrady', 'Howard', 'Hidayet', 'Memo', 'Jermaine'] 

-remove()komutu
Eğer çıkarılacak eleman Listede birden fazla ise ilk eleman çıkarılır.
>>> kadro.remove('Memo')
>>> kadro
['Carmelo', 'Bryant', 'McGrady', 'Howard', 'Hidayet', 'Jermaine']

-reverse()komutu
Bu komut dizideki elemanların sırasını tersine çevirir.

>>> kadro
['Carmelo', 'Bryant', 'McGrady', 'Howard', 'Hidayet', 'Jermaine']
>>> kadro.reverse()
>>> kadro
['Jermaine', 'Hidayet', 'Howard', 'McGrady', 'Bryant', 'Carmelo'] 

-sort()komutu
Dizinin elemanlarını numeritik ve alfebetik olarak sıralar

>>> kadro
['Jermaine', 'Hidayet', 'Howard', 'McGrady', 'Bryant', 'Carmelo']
>>> kadro.sort()
>>> kadro
['Bryant', 'Carmelo', 'Hidayet', 'Howard', 'Jermaine', 'McGrady']

-len()komutu
Dizinin uzunluğunu, eleman sayısını verir.

>>> len(kadro)
6

Ayrıca bu komutlar haricinde listeyi bir tamsayı ile çarpabiliriz.
>>> fener=[3,'Carlos']
>>> fener*2
[3, 'Carlos', 3, 'Carlos'] 
Tüm anlatılanların uygulaması:


Hepinize Kolay gelsin. Sorularınızı ve takıldığınız yerleri ik@ibrahimkivanc.com mail adresime iletebilirsiniz.

Makalenin PDF Hali için > 19 - IronPyton Listeler

Tags:   ,
Categories:   IronPython
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed

IronPython Built-In Yapılar

Pazartesi, 10 Ağustos 2009 05:56 by ikivanc
Built In yapılar IronPython ile birlikte gelen ve hazır olarak kullanmanızı sağlayan özelliklerdir. Python yapısında bulunan ve IronPython içerisinde de gelen bu özellikler bu dilin temelini oluşturmakta. Built-in yapılar contrant’lar, exception’lar, fonksiyonlar, metodlar ve tipler olmak üzere çeşitleri bulunmaktadır.

>>import sys
>>sys.builtin_module_names


Aşağıda gördüğümüz gibi başlıca Built-in fonksiyonlar bulunmakta. Bunların tek tek incelenmesini önümüzdeki günlerde göreceğiz.
Başlıca built-in fonsiyonlarına bakacak olursak.


dir()
dir() fonksiyonu, IronPython uygulama platformunda da bulunan içerikleri listelemeye yarar. Ayrı zamanda kütüphanelerin içeriğini de göstermeye yardımcı olur.
 

>>dir()
['__builtins__', '__doc__', '__name__']

 
>>dir(math)

import
import komutu herhangi bir modülün veya ek dosyanın çalışma alanına alınmasını sağlar. Bu komutla birlikte .NET kütüphanelerini projemize alabileceğimiz gibi aynı şekilde python kütüphanelerini de projemize dahil edebiliriz.

IronPythonda bulunan “import” ifadesi C#ta bulunan “using” veya Visual Basic’teki “Imports” ifadeleri ile aynı görevi yapmaktadır.

>>dir(System.Math)


Boolean Tipler
And, Or, Not boolean operatörleri ile True-False boolean değerleri built-in olarak gelmektedir. Bu operatörler boolean değerleri kullanarak sonuç elde eder.

>>x = True
>>y = False
>>x or y
True
>>x and y
False
>>not x
False


 
Kaşılaştırmalar
Karşılaştırma operatörleri IronPython içersinde tüm nesneleri karşılaştırmak için kullanılan operatörlerdendir. Sadece nümerik değerleri değil aynı zamanda string değerleri ve diğer tüm nesne tiplerini de kolaylıkla karşılaştırabiliyoruz.
<      Küçüktür
<=    Küçük eşittir
>      Büyüktür
>=    Büyük eşittir
==    43 Eşittir
!=     Eşit değildir
İs     Benzer nesnedir
is not     Benzer nesne değildir.

>>1<4
True
>>2==(4/2)
True
>>”iron”<”ironpython”
True
>>”ironpython”<”ironpython”
False

 

Nümerik Tipler
 int,float,long, karmaşık sayılar ve temel cebirsel işlemler gibi pek çok numerik tip de built-in olarak IronPython ile beraber gelmekte
x + y    Toplama
x – y    Çıkarma
x * y    Çarpma
x / y     Bölme
x // y    Yuvarlanmış Bölme
x % y    Mod alma
-x         Negatifini alma
+x        Değişiklikyok
abs(x)   Mutlak değer
int(x)     İnteger’a dönüşüm
long(x)    long integer ‘a dönüşüm
float(x)    Float tipe dönüşüm
complex(re,im)    Karmaşık sayılar, reel ve imajiner kısmı
divmod(x, y)    Çift (x // y, x % y)
pow(x, y)    X üzeri y
x ** y    X üzeri y

>>int(2.3222)
2
>>float(7)
7.0
>>abs(-20)
20
>> complex(3,4)
(3+4j)
>>pow(2,5)
32
>>2**5
32



Hepinize Kolay gelsin. Sorularınızı ve takıldığınız yerleri ik@ibrahimkivanc.com mail adresime iletebilirsiniz.

Makalenin PDF Hali için > 18 - IronPyton Built-In Yapılar


Tags:  
Categories:   IronPython
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed

IronPython Silverlight Animasyonlar

Cumartesi, 8 Ağustos 2009 08:31 by ikivanc
IronPython ile Silverlight animasyonlarına göz atacağız. Çok trend bir örnek üzerinde, şık bir animasyon oluşturacağız.

Uygulamamızda ilk başta çizimimizi yapmak için Expression Blend tasarım aracını kullanacağız. Blend ile birlikte şeklin parçalarını oluşturduktan sonra bunu tek bir şekil haline getireceğiz. Getirdiğimiz bu şekili merkezi etrafında 360 derece döndürerek sürekli dönüyor efekti vereceğiz.

Bu işlemleri Blend de tamamladıktan sonra görüntümüz aşağıdaki gibi olacaktır.

 
 
Öncelikle Dönen şekli, üçgen parçalarını uçlarından birleştirerek oluşturacağız.
Daha sonra bunlar birleştirildikten sonra uygulamanın genel kodları aşağıdaki gibi olacaktır.

App.xaml
    1 <UserControl
    2   xmlns="http://schemas.microsoft.com/client/2007"
    3   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" x:Class="System.Windows.Controls.UserControl"
    4   Width="540" Height="300" mc:Ignorable="d">
    5   <UserControl.Resources>
    6     <Storyboard x:Name="Don">
    7       <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="path" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" RepeatBehavior="Forever">
    8         <EasingDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
    9         <SplineDoubleKeyFrame KeyTime="00:00:06" Value="360"/>
   10       </DoubleAnimationUsingKeyFrames>
   11     </Storyboard>
   12   </UserControl.Resources>
   13 
   14 
   15   <Grid x:Name="layout_root">
   16     <Grid.Background>
   17       <RadialGradientBrush>
   18         <GradientStop Color="#FF56A8D6"/>
   19         <GradientStop Color="#FF15628E" Offset="1"/>
   20       </RadialGradientBrush>
   21     </Grid.Background>
   22     <Path x:Name="path" Fill="White" Stretch="Fill" Stroke="#FF000000" StrokeThickness="0" Margin="-490,-452,-256,-384" RenderTransformOrigin="0.478,0.48"  Data="M416.65231,416.68381 L177.40311,-40.048756 C177.40311,-40.048756 62.942289,53.591216 62.942289,53.591216 159.94229,153.19428 319.68378,317.0614 416.68378,416.66446 M416.65652,416.66806 L437.03376,-93.052512 C437.03376,-93.052512 293.2598,-68.317426 293.2598,-68.317426 327.46274,66.44135 382.49051,281.90826 416.69342,416.66702 M416.66806,416.65656 L682.70577,-4.7129165 C682.70577,-4.7129165 558.4739,-85.985345 558.4739,-85.985345 520.71514,47.820647 454.45932,282.8681 416.70053,416.67413 M416.68378,416.65234 L866.95977,179.03344 C866.95977,179.03344 774.83277,67.725552 774.83277,67.725552 675.22974,164.72555 516.30615,319.68378 416.70313,416.68378 M416.69952,416.65656 L901.85637,436.98506 C901.85637,436.98506 880.91841,299.17529 880.91841,299.17529 746.15962,333.3782 551.45935,382.49054 416.70056,416.69345 M416.71103,416.66806 L832.06318,679.03556 C832.06318,679.03556 915.815,558.89371 915.815,558.89371 782.00903,521.13492 550.49945,454.45932 416.69348,416.70053 M416.71524,416.68378 L684.10163,919.31931 C684.10163,919.31931 799.95832,811.545 799.95832,811.545 702.95832,711.94191 513.68378,516.30621 416.68378,416.70313 M416.71103,416.69946 L395.15785,968.78947 C395.15785,968.78947 548.70285,929.92007 548.70285,929.92007 514.49994,795.16128 450.87704,551.45923 416.6741,416.70047 M416.69949,416.71097 L118.77684,887.517 C118.77684,887.517 262.5508,958.18871 262.5508,958.18871 300.30958,824.38268 378.90823,550.49939 416.66702,416.69339 M416.68378,416.71524 L-27.78885,649.00009 C-27.78885,649.00009 30.837425,792.11024 30.837425,792.11024 130.44047,695.11024 317.06137,513.68378 416.66443,416.68381 M416.66806,416.71103 L-33.372306,399.88243 C-33.372306,399.88243 -40.351625,534.15862 -40.351625,534.15862 94.407146,499.95568 281.90826,450.87708 416.66705,416.67413 M416.65656,416.69952 L-9.6426227,147.23119 C-9.6426227,147.23119 -31.976442,290.34133 -31.976442,290.34133 101.82955,328.10009 282.8681,378.90829 416.6741,416.66705">
   23       <Path.RenderTransform>
   24         <TransformGroup>
   25           <ScaleTransform ScaleX="1" ScaleY="1"/>
   26           <SkewTransform AngleX="0" AngleY="0"/>
   27           <RotateTransform Angle="0"/>
   28           <TranslateTransform X="0" Y="0"/>
   29         </TransformGroup>
   30       </Path.RenderTransform>
   31     </Path>
   32     <TextBlock HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,8,8,0" FontSize="18.667" Text="IronPython Silverlight" d:LayoutOverrides="HorizontalAlignment"/>
   33     <TextBlock HorizontalAlignment="Right" Margin="0,36,8,0" VerticalAlignment="Top" FontSize="18.667" Text="Animation!" d:LayoutOverrides="HorizontalAlignment"/>
   34   </Grid>
   35 
   36 </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 animasyon(s,e):
    7     scene.Don.Begin()
    8 
    9 scene.layout_root.Loaded += animasyon


Görüldüğü gibi ironpython kodları ile “Don” ismini verdiğimiz animasyonu sahne üzerinden herhangi bir element’e erişir gibi eriştik ve Begin() fonksiyonuyla da animasyonu hareket ettirdik.

    scene.Don.Begin()

Bu işlemi bir fonksiyon içerisine yazarak, grid’imiz ekrana yüklendiği zaman hareket ettirmek için evet’ine animasyon fonksiyonunu atadık..

    6 def animasyon(s,e):
    7     scene.Don.Begin()
    8 
    9 scene.layout_root.Loaded += animasyon 



Görüldüğü gibi çok şık bir efekte sahip olduk. IronPython’da animasyon geliştirmek bu kadar kolay. Bundan sonraki aşamalarda daha komplex örnekler yapabiliriz.


Hepinize Kolay gelsin. Sorularınızı ve takıldığınız yerleri ik@ibrahimkivanc.com mail adresime iletebilirsiniz.

Proje Kodları için:


Makalenin PDF Hali için > 17 - IronPyton Silverlight Animasyon


Blog blog blog..

Perşembe, 6 Ağustos 2009 08:02 by ikivanc
Çok gezen bir insan olduğum için eskiden masaüstü bilgisayarım başında çok fazla vakit geçiremiyordum, geçirdiğim vakitte de bilgisayar bilimleri üzerine ayrıyordum. Haliyle blogum için de  birşeyler yazamıyordum.

Son günlerdeki blog girdimdeki artışın sebebi yeni aldığım laptop :) Acer Aspire 6930G, özellikle Core2 Duo T6400 Intel işlemci, 4GB DDR2 Ram özellikleriyle pek çok işlemi bir arada yapabiliyorum. Bu da haliyle performansıma olumlu etki etti :)

Eğer notebook almayı düşünüyorsanız kesinlikle tavsiye ederim.
Tags:  
Categories:   Kola Molası
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (2) | Comment RSSRSS comment feed

Nerde o eski Twitter 'lar

Salı, 4 Ağustos 2009 10:35 by ikivanc
Twitter gerçekten de çok kullanışlı bi uyguluma. Kullandıkça bağımlılık yapıyor. Benim de ikivanc adı altında hesabım bulunuyor.

Özellikle duyurmak istediğiniz bilgileri buradan rahatlıkla insanlarla paylaşabiliyor, linkler vererek buradan insanların o linke ulaşmasını sağlayabiliyorsunuz. Ya da nerede bulunduğunuz, ne yaptığınız hakkında bilgilendirmelerde de bulunabiliyorsunuz.

Tek yapmanız gereken o kişiyi eklemek..

Peki bundan bi 70 yıl önce, bu tür duyuru ve önemli açıklamalar nasıl yapılıyordu dersiniz?



Geçenlerde rastladım çok hoşuma gitti, 1935 yılına ait ilkel bir twitter :)

Başka servislerin de böyle ilkel hali varmıdır ki? :)

Tags:  
Categories:   Kola Molası
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (2) | Comment RSSRSS comment feed

Türkçe Chiron

Pazar, 2 Ağustos 2009 04:14 by ikivanc
Açık kaynak projelerin en güzel yanı, projeyi istediğiniz şekilde değiştirebilmek ve modifiye edebilmek. IronPython da bildiğimiz gibi Microsoft’un açık kaynak projelerinden birisi ve http://ironpython.codeplex.com adresinde projenin tüm kodları mevcut.

Şu anda sitede IronPython 2.0.2 sürümü bulunmakta. Ben de bu kodlar üzerinde oynama yaparak IronPython’ın gelişmesine yardımcı oluyorum. Yeni projem olan IronPython’ın tamamen yerelleştirilmesinde ilk adımı olarak Chiron Türkçeleştirmesini tamamladım. Tüm Chiron komutlarını Türkçeye çevirdim.

Chiron da özellikle seçeneklerde sizi yönlendirecek olan komutların kullanımları ve açıklamaları artık Türkçe

 
Bu kodların kullanımı sonucunda gelen uyarılar ve yapacaklarınızı artık rahatlıkla deneyerek görebileceksiniz.

 
Aşağıdaki klasörden Chiron Türkçe uygulamasını temin edebilirsiniz. Normal geliştirmelerimizde kullandığımız AgDLR’ın içindeki Chiron’ı Türkçe hali ile değiştirirsek, komutları daha çok anlayarak geliştirme yapabilirsiniz. Ekteki Chiron.exe’yi çıkarıp “C://”  dizininizde bulunan “agdlr” klasörünün içindeki “bin” klasörünün içerisine var olan Chiron.exe ile yer değiştirelim.

Chiron’la birlikte AgDLR’ın utilities bölümünde bulunan “Chiron-Here” uygulamasını da artık Türkçe olarak kullanabilirsiniz. Tek yapmanız gereken reg dosyasını çift tıklayarak çalıştırıp onaylamak. Bunun yaptıktan sonra  Mouse’u sağ tıkladığınız zaman ingilizce olan yönlendirmeler artık Türkçe olarak karşınıza çıkacak.


Umarım en yakın zamanda tüm yerelleştirmeyi yaparak herkesin IronPython ile daha yakından ilgilenmesini sağlayabilirim.

Hepinize Kolay gelsin. Sorularınızı ve takıldığınız yerleri ik@ibrahimkivanc.com mail adresime iletebilirsiniz.



Makalenin PDF Hali için > 16 - IronPyton Silverlight Türkçe Chiron

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