您可以通过以下方式设置线性渐变动画:
<Storyboard x:Key="Focused" >
<DoubleAnimation Duration="0:0:0.3" Storyboard.TargetProperty=
"BorderBrush.GradientStops[0].Offset" Storyboard.TargetName="Bd"/>
</Storyboard>
到目前为止很好。您可以设置颜色以将其设置为动画。如何将To属性设置为point 你已经拥有的渐变资源?
是否可以使用没有偏移的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背景设置为鼠标悬停,我该怎么办?
答案 0 :(得分:3)
您有两种选择,具体取决于您想要的效果以及您是否知道所涉及画笔的结构:
您可以使用<VisualBrush>
从任何画笔淡化到另一个画笔,画布包含两个重叠的1x1矩形画布,每个画笔都涂有两个画笔。您可以设置VisualBrush
内两个矩形的不透明度的动画,以便从一个画笔淡化到另一个画笔。无论实际画笔是什么,这都可以工作 - 例如,您可以从径向渐变淡化为线性渐变,或者从瓷砖画笔淡化为可视画笔。
您可以通过设置各个属性的动画来淡化两个相似结构的画笔,如您的初始示例所示。对于故事板的“To”组件,只需使用Binding
到源画笔的给定组件即可。这具有结构平滑过渡的优点。例如,如果您在具有两个不同中心点的两个径向笔刷之间淡入淡出,则径向中心实际上将移过对象而不是一个淡出而另一个淡入。
答案 1 :(得分:0)
完全猜测,没有测试支持它,使用大量的批判性思维等......但你究竟是如何在一个渐变和另一个渐变之间“淡化”?我的意思是它们是对象实例,每个可能有许多不同的渐变点等。除非MS内置一些神奇的酱汁,动画师不会检查这个(我也不确定你能设置一个满足所有顾客的算法)。
而是尝试设置渐变并为颜色之间的渐变点设置动画。
答案 2 :(得分:0)
您可以使用ColorAnimation将其从一种颜色设置为另一种颜色。