2011-03-08 67 views
2

我正在嘗試在圖像的mousemove/source更改圖像上移動以及縮放圖像。我已經爲圖像編寫了以下樣式,但它不起作用:使用ResourceDictionary進行圖像轉換

<Style x:Key="MovingImage" TargetType="{x:Type Image}"> 
    <Setter Property="HorizontalAlignment" Value="Center"/> 
    <Setter Property="Stretch" Value="Uniform"/> 
    <Setter Property="VerticalAlignment" Value="Top"/> 
    <Setter Property="Width" Value="auto"/> 
    <Setter Property="Height" Value="auto"/> 
    <Style.Resources> 
     <Storyboard x:Key="TransformImage"> 
      <DoubleAnimation Duration="0:0:3" By="-500" Storyboard.TargetProperty="(Image.RenderTransform).(TranslateTransform.X)"></DoubleAnimation> 
      <DoubleAnimation Duration="0:0:3" By="-500" Storyboard.TargetProperty="(Image.RenderTransform).(TranslateTransform.Y)"></DoubleAnimation> 
      <DoubleAnimation Duration="0:0:3" By="-500" From="1" To="0.5" Storyboard.TargetProperty="(Image.RenderTransform).(ScaleTransform.ScaleX)"></DoubleAnimation> 
      <DoubleAnimation Duration="0:0:3" By="-500" From="1" To="0.5" Storyboard.TargetProperty="(Image.RenderTransform).(ScaleTransform.ScaleY)"></DoubleAnimation> 
     </Storyboard> 
    </Style.Resources> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Trigger.EnterActions> 
       <BeginStoryboard Storyboard="{StaticResource TransformImage}" /> 
      </Trigger.EnterActions> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

回答

1

您需要做兩件事才能使其工作。首先定義默認轉換要已設置組(所以你的情況變換組內部的相應變換)

<Setter Property="RenderTransform"> 
    <Setter.Value> 
     <TransformGroup> 
      <TranslateTransform /> 
      <ScaleTransform /> 
     </TransformGroup>       
    </Setter.Value> 
</Setter> 

這時旁邊,當你實際引用的目標屬性,你必須明確指定的點轉換你想改變的組。我還建議加入一些退出動作,讓你的形象永遠不會消失=)

<DoubleAnimation Duration="0:0:3" By="-500" Storyboard.TargetProperty="(Image.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)"></DoubleAnimation> 
<DoubleAnimation Duration="0:0:3" By="-500" Storyboard.TargetProperty="(Image.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.Y)"></DoubleAnimation> 
<DoubleAnimation Duration="0:0:3" By="-500" From="1" To="0.5" Storyboard.TargetProperty="(Image.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"></DoubleAnimation> 
<DoubleAnimation Duration="0:0:3" By="-500" From="1" To="0.5" Storyboard.TargetProperty="(Image.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"></DoubleAnimation>