Интересно, может ли кто-то помочь мне - у меня есть маркировка, которую я должен быть в состоянии плавно наложить между любыми 2 цветами, когда метод называют в коде позади.
Моя лучшая попытка до сих пор:
Private OldColor as Color = Colors.White
Sub SetPulseColor(ByVal NewColor As Color)
Dim F As New Animation.ColorAnimation(OldColor, NewColor, New Duration(TimeSpan.Parse("00:00:01")))
OldColor = NewColor
F.AutoReverse = False
PulseLogo.BeginAnimation(Label.ForegroundProperty, F)
End Sub
Проблема, которую я имею, состоит в том, что ColorAnimation возвращает Медиа. Цвет и тип свойства для Переднего плана являются Кистью.
Я знаю, как создать соответствующую кисть, но не, как сделать это в анимации.
От Гугления кажется, что мне нужен преобразователь:
<ValueConversion(GetType(SolidColorBrush), GetType(SolidColorBrush))> _
Public Class ColorConverter
Implements IValueConverter
Public Function Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.Convert
Dim Color As Color = DirectCast(value, Color)
Return New SolidColorBrush(Color)
End Function
Public Function ConvertBack(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements System.Windows.Data.IValueConverter.ConvertBack
Return Nothing
End Function
End Class
но все примеры, которые я видел, связывают его с анимацией в XAML - И я хотел бы сделать это в коде позади...
Кто-то может указать на меня в правильном направлении?
Спасибо
Обычное решение - не использовать конвертер, а вместо этого анимировать цвет кисти. Однако для этого вам понадобится PropertyPath, что, в свою очередь, означает, что вам понадобится раскадровка:
Storyboard s = new Storyboard();
s.Duration = new Duration(new TimeSpan(0, 0, 1));
s.Children.Add(F);
Storyboard.SetTarget(F, PulseLogo);
Storyboard.SetTargetProperty(F, new PropertyPath("Foreground.Color"));
s.Begin();
(простите синтаксис C #)
Обратите внимание на путь свойства в вызове SetTargetProperty, который проходит вниз через свойство Foreground и в результирующий свойство Color кисти.
Вы также можете использовать этот метод для анимации отдельных точек градиента в градиентной кисти и т. Д.