如何为 MapPolygon (BingMap MapControl) UWP 的 FillColor 设置动画

How to animate FillColor of MapPolygon (BingMap MapControl) UWP

我想在 MapPolygon 的 FillColor 属性 上使用 ColorAnimation。

我使用 BingMap UWP 控件创建了一个热图 Heatmap Preview

我有一个函数,我在其中为每个 MapPolygon 计算一个新的 FillColor。我现在想使用 ColorAnimation 而不是仅仅将 FillColor 从旧值更改为新值。

//Instead of 
statePolygon.FillColor = backGroundColor;

//I want to use something like the following
Storyboard storyboard = new Storyboard();
ColorAnimation animation = new ColorAnimation();
animation.From = statePolygon.FillColor;
animation.To = newBackGroundColor;
animation.Duration = new Duration(new TimeSpan(0, 0, 0, 5));
storyboard.Children.Add(animation);
Storyboard.SetTargetProperty(animation, "(MapPolygon.FillColor)");
Storyboard.SetTarget(myStoryboard, statePolygon);
storyboard.Begin();

但是使用情节提要代码,我总是得到一个 System.Runtime.InteropServices.COMException,它告诉我未指定动画目标。

我为 Storyboard.SetTargetproperty 的第二个参数尝试了很多值...没有任何效果。

我错过了什么?

有两个问题。

在您发布的代码片段中,您在 SetTarget 中使用 myStoryboard 而不是 storyboard 变量。修复似乎解决了 COMException。但是多边形颜色仍然不会动画。

原因是 FillColor 属性 不是 DependencyProperty。要启用此 属性 的动画,您必须在开始 Storyboard:

之前启用您的动画的相关动画
animation.EnableDependentAnimation = true;

依赖动画和独立动画的区别是described in MSDN documentation。请注意,此动画的性能可能比独立动画差一些。