1

我有一组控件(Button、ToggleButton)我想要相同的样式,所以我在我的 ResourceDictionary 中为正常/禁用/启用状态创建了一些渐变画笔,例如“ButtonFillBrush”、“ButtonFillMouseOverBrush”等。这些是定义为全局可重复使用的画笔资源。

我知道可以更改状态内动画中渐变的各个停止点,例如:

<VisualState x:Name="MouseOver">
   <Storyboard>
      <ColorAnimation Duration="0" To="#FF041D06" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[1].(GradientStop.Color)" Storyboard.TargetName="path" d:IsOptimized="True"/>
      <ColorAnimation Duration="0" To="#FF118519" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)" Storyboard.TargetName="backgroundRectangle" d:IsOptimized="True"/>
    </Storyboard>
</VisualState>

现在,我知道在 VisualState Manager 中可以执行以下操作:

<VisualState x:Name="MouseOver">
   <Storyboard>
      <ColorAnimation Duration="0" To="ButtonFillMouseOverBrush" Storyboard.TargetProperty="(Shape.Fill).(GradientBrush)" Storyboard.TargetName="backgroundRectangle" d:IsOptimized="True"/>
    </Storyboard>
</VisualState>

谢谢!

更新:使用有关静态资源引用的答案和更多搜索:http ://wildermuth.com/2008/07/18/Animating_Brushes_with_ObjectAnimationUsingKeyFrames

<VisualState x:Name="MouseOver">
  <Storyboard>
    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="backgroundRectangle"                      
Storyboard.TargetProperty="Fill">
      <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{StaticResource ButtonFillMouseOverBrush}" />
    </ObjectAnimationUsingKeyFrames>
  </Storyboard>
</VisualState>

所以,最好有一个 BrushAnimation 之类的......

罗吉尔

4

1 回答 1

0

您可以在此处找到有关资源词典及其使用的更多信息。但是,对于您的彩色动画问题,可以在此链接上找到有关 Silverlight 动画(包括彩色动画)的大量信息Silverlight Animations Quickstart

于 2011-01-03T13:14:40.950 回答