WPF

2013-02-14 24 views
7

'da birden çok dönüşüm etkisi WPF'de C# ile birden çok dönüşüm efekti uygulamam gerekiyor.WPF

Aşağıdaki kodu denedim ancak yalnızca son etkiyi görüyorum ve her ikisini birlikte değil.

Yapılması olası bir ipucu var mı?

XAML

<Grid> 
    <Rectangle Fill="#FFF4F4F5" Name="rect" HorizontalAlignment="Left" Height="225" Margin="84,39,0,0" Stroke="Black" VerticalAlignment="Top" Width="299"/> 
</Grid> 

C#

SkewTransform skewTransform1 = new SkewTransform(45, 0, -50, 50); 
rect.RenderTransform = skewTransform1; 

RotateTransform rotateTransform = new RotateTransform(30); 
rect.RenderTransform = rotateTransform; 
+2

Bunu bir TransformGroup kullanarak eklemek istedim, birden çok aynı tür dönüşüm türünü nasıl uygulayabileceğinizi de ekleyelim. Bunu eklemek istedim, çünkü bu konuyla ilgili açıklık bulmak kıttır. –

cevap

23

Onlara her zaman üzerine yazmak yerine bir TransformGroup hem etkilere birleştirmek zorunda! Eğer etkileşimli yapabilirsiniz tetikleyici bölümü eklerseniz

var transformGroup = new TransformGroup(); 
var skewTransform = new SkewTransform(45, 0, -50, 50); 
var roateTransform = new RotateTransform(30); 

transformGroup.Children.Add(skewTransform); 
transformGroup.Children.Add(rotateTransform); 

rect.RenderTransform = transformGroup; 
8

bir düğmeyi veya dönüşümleri uygulamak için başka bir mekanizmayı kullanarak değilseniz, sen yalnızca XAML

<Rectangle Fill="#FFF4F4F5" 
       Name="rect" 
       HorizontalAlignment="Left" 
       Height="225" 
       Margin="84,39,0,0" 
       Stroke="Black" 
       VerticalAlignment="Top" 
       Width="299"> 
     <Rectangle.RenderTransform> 
      <TransformGroup> 
       <SkewTransform AngleX="45" 
           AngleY="0" 
           CenterX="-50" 
           CenterY="50" /> 
       <RotateTransform Angle="30" /> 
      </TransformGroup> 
     </Rectangle.RenderTransform> 
    </Rectangle> 

bu tanımlayabilirsiniz.

<Rectangle Fill="#FFF4F4F5" 
       Name="rect" 
       HorizontalAlignment="Left" 
       Height="225" 
       Margin="84,39,0,0" 
       Stroke="Black" 
       VerticalAlignment="Top" 
       Width="299"> 
     <Rectangle.RenderTransform> 
      <TransformGroup> 
       <SkewTransform AngleX="45" 
           AngleY="0" 
           CenterX="-50" 
           CenterY="50" /> 
       <RotateTransform x:Name="RotateTransform" 
           Angle="0" /> 
      </TransformGroup> 
     </Rectangle.RenderTransform> 
     <Rectangle.Triggers> 
      <EventTrigger RoutedEvent="Rectangle.MouseDown"> 
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetName="RotateTransform" 
             Storyboard.TargetProperty="Angle" 
             To="360" 
             Duration="0:0:5" 
             FillBehavior="Stop" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </Rectangle.Triggers> 
    </Rectangle> 
+0

XAML sürümü için teşekkürler! –

+2

XAML'nin kullanıcı etkileşimine tepki vermesini sağlayan bir örnek eklendi. – ywm