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.
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>
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.
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..
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