我想在mappolygon的填充属性上使用coloranimation。
我使用UWP的BingMap
控件创建了一个热图热图预览
我有一个函数,在其中为每个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;
MSDN文档中描述了依赖和独立动画之间的差异。请注意,此动画的性能可能比独立动画差一些。