【问题标题】:How to animate FillColor of MapPolygon (BingMap MapControl) UWP如何为 MapPolygon (BingMap MapControl) UWP 的 FillColor 设置动画
【发布时间】:2016-11-29 14:42:55
【问题描述】:

我想在 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 的第二个参数尝试了很多值...没有任何效果。

我错过了什么?

【问题讨论】:

    标签: c# uwp bing-maps uwp-maps


    【解决方案1】:

    有两个问题。

    在您发布的代码 sn-p 中,您在 SetTarget 中使用 myStoryboard 而不是 storyboard 变量。修复该问题似乎可以解决COMException。但是多边形颜色仍然不会动画。

    原因是FillColor 属性不是DependencyProperty。要启用此属性的动画,您必须在启动 Storyboard 之前为您的动画启用依赖动画:

    animation.EnableDependentAnimation = true;
    

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

    【讨论】:

    • 谢谢 :) 它现在可以工作了。 SetTarget 中的 myStoryboard 是我在 xaml 中创建的故事板,忘记更改了。
    猜你喜欢
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多