2016-11-29 4 views
0

Я хочу использовать ColorAnimation для свойства FillColor MapPolygon.Как анимировать FillColor MapPolygon (BingMap MapControl) UWP

Я создал Heatmap с BingMap управления для UWP Heatmap Preview

Я получил функцию, где я вычислить новый FillColor для каждого MapPolygon. Теперь я хочу использовать 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 ... ничего не работало.

Что мне не хватает?

ответ

1

Есть две проблемы.

В приведенном вами фрагменте кода вы используете myStoryboard в SetTarget вместо переменной storyboard. Фиксация, которая, кажется, разрешает COMException. Но цвет многоугольника все равно не будет оживлять.

Причина в том, что имущество FillColor не является DependencyProperty. Чтобы включить анимацию этого свойства, вы должны включить зависимую анимацию анимации перед запуском Storyboard:

animation.EnableDependentAnimation = true; 

Разница между зависимым и независимым анимационной described in MSDN documentation. Обратите внимание, что производительность этой анимации может быть немного хуже, чем для независимых анимаций.

+0

thx alot :) Это сработало сейчас. MyStoryboard в SetTarget была раскадрой, созданной в xaml, и забыла ее изменить. – David198