2013-02-14 3 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> 

C#

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

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

TransformGroupを使用して複数の同一の変換タイプを適用する方法を追加したいだけです。私はその話題を明確にすることが乏しいため、これを追加したかっただけです。 –

答えて

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

XAMLバージョンありがとうございます! –

+2

XAMLをユーザーの操作に反応させる例を追加しました。 – ywm

関連する問題