2009-11-10 101 views
1

您可以通过动画线性渐变:WPF动画线性渐变

<Storyboard x:Key="Focused" > 
<DoubleAnimation Duration="0:0:0.3" Storyboard.TargetProperty= 
"BorderBrush.GradientStops[0].Offset" Storyboard.TargetName="Bd"/> 
</Storyboard> 

精细至今。你可以设置一个颜色来为其设置动画。如何设置To属性将 指向已有的渐变资源?

是否有可能使用borderbrush目标属性没有偏移?在大多数情况下,我需要完全切换渐变。

编辑:

好吧,那我该如何使用彩色动画从一个梯度偏移到另一个,其中目标颜色不是硬编码,但它从一个资源即将消失?

例如:

<!-- @ MouseOver --> 
<LinearGradientBrush x:Key="MouseOverBrush" StartPoint="0,0" EndPoint="0,1"> 
    <GradientStop Color="#FF656565" Offset="0"/> 
    <GradientStop Color="#33656565" Offset="1"/> 
</LinearGradientBrush> 

<Style x:Key="CheckBoxStyle" TargetType="{x:Type CheckBox}"> 
    <Setter Property="Foreground" Value="{StaticResource CheckBoxForeground}"/> 
    <Setter Property="Background" Value="{StaticResource CheckBoxGradientBrush}"/> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type CheckBox}"> 
       <Border x:Name="Bd" 
         Background="{TemplateBinding Background}"> 
        <ContentPresenter 
         Content="{TemplateBinding Content}" 
         SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
         RecognizesAccessKey="True"/> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter TargetName="Bd" Property="Background" Value="{StaticResource MouseOverBrush}"/>   
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

,如果我想动画BD的鼠标背景到mouseoverbrush,我该怎么办呢?

回答

0

完整的猜测,没有测试支持它,用堆积的批判性思维等......但你究竟如何意味着在一个渐变和另一个渐变之间“淡化”?我的意思是它们是对象实例,每个可能有许多不同的渐变点等。除非MS内置了一些魔术酱,否则动画师不会检查这个(我是否确定可以设置一个满足其所有客户的算法)。

相反,尝试设置渐变并为颜色之间的渐变点设置动画。

0

您可以使用ColorAnimation将其从一种颜色变为另一种颜色。

3

你有两个选择,这取决于你想,你是否不知道刷的参与结构的影响:

  1. 你可以从任何刷使用<VisualBrush>具有画布淡出到另一个包含两个重叠的1x1矩形,与两个画笔中的每一个一起绘制。您可以将VisualBrush内两个矩形的不透明度设置为从一个画笔淡入到另一个画笔。无论实际的画笔是什么 - 这都可以工作 - 例如,您可以从放射渐变渐变为线性渐变,或从拼贴画刷到可视画笔。

  2. 您可以通过动画invidividual属性在类似结构的两个画笔之间淡入淡出,如您的初始示例所示。对于故事板的“收件人”组件,仅对源刷的给定组件使用Binding。这具有结构平稳过渡的优点。例如,如果您在具有两个不同中心点的两个径向画笔之间褪色,则径向中心实际上会移动穿过对象,而不是一个淡出和另一个淡入。