如何为 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。请注意,此动画的性能可能比独立动画差一些。
我想在 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。请注意,此动画的性能可能比独立动画差一些。