MouseEnter / MouseLeave(WPF)上VisualBrush的动画颜色值

时间:2014-12-23 08:38:51

标签: wpf storyboard jquery-animate

我有以下问题。我希望在鼠标悬停时为图标的颜色值设置动画(并在鼠标离开后将其设置为动画)。为了实现这一点,我创建了一个在MouseEnter上触发的新ColorAnimation。动画的属性路径是"(Path.Fill)。(SolidColorBrush.Color)"。但是当运行时会出现错误; '填充' property不指向path'(Path.Fill)中的DependencyObject。(SolidColorBrush.Color)' 。虽然我认为我理解错误意味着什么,但我不知道我应该使用什么属性路径。有任何想法吗?提前谢谢您的时间。如果有任何不清楚的地方,请告诉我。

聚苯乙烯。如果有人更好地了解如何放置图标/路径'资源我非常感激。

代码;

ColorAnimation mouseEnterColorAnimation = new ColorAnimation {
  To = Colors.Yellow,
  Duration = TimeSpan.FromSeconds(1)
};

Storyboard.SetTargetName(mouseEnterColorAnimation, "DeleteIconGrid");
Storyboard.SetTargetProperty(mouseEnterColorAnimation, new PropertyPath("Path.Fill).(SolidColorBrush.Color)"));
Storyboard mouseEnterStoryboard = new Storyboard();
mouseEnterStoryboard.Children.Add(mouseEnterColorAnimation);
mouseEnterStoryboard.Begin(this);

的Xaml;

<Grid x:Name="Grid" Background="Transparent" Width="100" Height="100" MouseDown="Grid_MouseDown" MouseEnter="Grid_MouseEnter" MouseLeave="Grid_MouseLeave" >
  <Grid x:Name="DeleteIconGrid" Width="50" Margin="0,0,0,14"><Grid.Background><VisualBrush Visual="{StaticResource Icon-Delete}" Stretch="Uniform" /></Grid.Background></Grid>
  <Label Content="Delete icon" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="6" Foreground="{DynamicResource Gray}"></Label>
</Grid>

资源;

<Canvas x:Key="Icon-Delete" Background="Transparent">
  <Path Stretch="Uniform" Fill="LightSlateGray" Data="F1 M 4.70432,0L 0.0480347,4.77802L 7.00842,11.6812L 0,18.7292L 4.70432,23.46L 11.6647,16.412L 18.6252,23.46L 23.3774,18.7774L 16.369,11.6812L 23.3294,4.77802L 18.6252,0L 11.6647,6.9986L 4.70432,0 Z" />
</Canvas>

1 个答案:

答案 0 :(得分:1)

VisualBrush 不具有Color属性...您似乎将其与SolidColorBrush混淆了。因此,您无法为VisualBrush的颜色设置动画,但在使用SolidColorBrush时可以。

你的PropertyPath也错了......而不是:

"Path.Fill).(SolidColorBrush.Color)"

它应该是这样的:

"(Path.Fill).(SolidColorBrush.Color)"

最后,如果您要为Color的{​​{1}}属性设置动画,那么您需要将Brush属性设置为Fill的实例,就像您所做的那样在SolidColorBrush中的Path

Canvas

更新&gt;&gt;&gt;

要为<Path Stretch="Uniform" Fill="LightSlateGray" Data="F1 M 4.70432,0L 0.0480347,4.77802L 7.00842,11.6812L 0,18.7292L 4.70432,23.46L 11.6647,16.412L 18.6252,23.46L 23.3774,18.7774L 16.369,11.6812L 23.3294,4.77802L 18.6252,0L 11.6647,6.9986L 4.70432,0 Z" /> 设置动画,您需要将其声明为内联。从Visual Studio论坛的VisualBrush Animation页面获取此示例:

VisualBrush.Visual