Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 37 di 59
  • livello principiante
Indice lezioni

Le spline

Impostare curve per parametri e tracciati
Impostare curve per parametri e tracciati
Link copiato negli appunti

Il massimo della versatilità ed espressività lo raggiungiamo utilizzando il tipo Spline, come dimostrato dal prossimo esempio, nel quale muoviamo il rettangolo lungo tutta la superficie del Canvas ed a velocità differenti.

<Canvas x:Name="LayoutRoot" Background="Azure">
  <Canvas.Resources>
    <Storyboard x:Name="MyStoryboard">
      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="MyRectangle"
                                     Storyboard.TargetProperty="(Canvas.Left)"
                                     Duration="0:0:8">
        
        <SplineDoubleKeyFrame Value="300" KeyTime="0:0:2"
                              KeySpline="0.25,0.75 0.75,0.25" />
        <SplineDoubleKeyFrame Value="100" KeyTime="0:0:4"
                              KeySpline="0.75,0.25 0.25,0.75" />
        <SplineDoubleKeyFrame Value="50" KeyTime="0:0:6"
                              KeySpline="0.25,0.75 0.75,0.25" />
        <SplineDoubleKeyFrame Value="200" KeyTime="0:0:8"
                              KeySpline="0.75,0.25 0.25,0.75" />
      
      </DoubleAnimationUsingKeyFrames>
      
      <DoubleAnimationUsingKeyFrames Storyboard.TargetName="MyRectangle"
                                     Storyboard.TargetProperty="(Canvas.Top)"
                                     Duration="0:0:8">
        
        <SplineDoubleKeyFrame Value="50" KeyTime="0:0:2"
                              KeySpline="0.25,0.75 0.75,0.25" />
        
        <SplineDoubleKeyFrame Value="250" KeyTime="0:0:4"
                              KeySpline="0.75,0.25 0.25,0.75" />
        
        <SplineDoubleKeyFrame Value="50" KeyTime="0:0:6"
                              KeySpline="0.25,0.75 0.75,0.25" />
        
        <SplineDoubleKeyFrame Value="100" KeyTime="0:0:8"
                              KeySpline="0.75,0.25 0.25,0.75" />
      </DoubleAnimationUsingKeyFrames>
    </Storyboard>
  </Canvas.Resources>
  
  <Rectangle x:Name="MyRectangle" Width="300" Height="150"
             Fill="Orange"
             MouseLeftButtonDown="MyRectangle_MouseLeftButtonDown" />
</Canvas>

Oltre alle comuni proprietà KeyTime e Value, per ogni SplineDoubleKeyFrame dobbiamo indicare quali sono i due punti di controllo necessari alla rappresentazione della curva di Bézier, con la solita sintassi "x1,y1 x2,y2". Dal precedente frammento di codice possiamo anche notare che, in XAML, proprietà particolari come Canvas.Left, quindi che hanno il punto nel nome, debbano essere definite fra parentesi tonde.

Il markup XAML da scrivere per generare animazioni articolate è molto verboso e complesso, realizzare grandi effetti applicati contemporaneamente a diversi elementi dell'interfaccia scrivendo tutto il codice dichiarativo a mano è impensabile.

Editor come Expression Blend rendono il lavoro molto più semplice e mantenibile. Con Blend possiamo registrare l'animazione in modo visuale spostando gli oggetti sulla scena e lavorando con la timeline. Una volta impostato tutto sarà il programma a generare tutto lo XAML necessario a riprodurre l'animazione in Silverlight.

Ti consigliamo anche