WPF

2013-02-14 36 views
7

में एकाधिक परिवर्तन प्रभाव मुझे WPF में C# के माध्यम से एकाधिक ट्रांसफॉर्म प्रभाव लागू करने की आवश्यकता है।WPF

मैंने नीचे कोड का प्रयास किया है, लेकिन मैं केवल अंतिम प्रभाव देखता हूं, दोनों एक साथ नहीं।

कोई सुराग अगर ऐसा करना संभव है?

XAML

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

सी #

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

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

बस ट्रांसफॉर्म समूह का उपयोग करके यह जोड़ना चाहता था कि आप कई समान परिवर्तन प्रकारों को भी कैसे लागू कर सकते हैं। मैं केवल इसे जोड़ना चाहता था क्योंकि उस विषय पर स्पष्टीकरण ढूंढना दुर्लभ रहा है। –

उत्तर

23

आप उन्हें हर बार अधिलेखन के बजाय एक TransformGroup में दोनों प्रभाव गठबंधन करने के लिए है!

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

आप एक बटन या रूपांतरण लागू करने के लिए एक और तंत्र का उपयोग नहीं कर रहे हैं, तो आप पूरी तरह से 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> 

में इस परिभाषित आप एक ट्रिगर अनुभाग आप इसे इंटरैक्टिव बना सकते हैं जोड़ देते हैं तो कर सकते हैं।

<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

एक्सएएमएल संस्करण के लिए धन्यवाद! –

+2

उपयोगकर्ता इंटरैक्शन पर XAML प्रतिक्रिया बनाने का एक उदाहरण जोड़ा गया। – ywm