Zastanawiam się, czy ktoś może mi pomóc - mam etykietę, która musi być w stanie przejść między dwoma dowolnymi kolorami, gdy metoda jest wywoływana w kodzie za.WPA ColorAnimation dla właściwości pędzla
Moja najlepsza próba tej pory:
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
Problem mam to, że ColorAnimation zwraca Media.Color i rodzaju nieruchomości na pierwszym planie jest szczotka.
Wiem, jak utworzyć odpowiedni pędzel, ale nie jak to zrobić w animacji.
Od Googling wydaje się, że potrzebny jest konwerter:
<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
ale wszystkie przykłady Widziałem powiązać go z animacji w XAML - I chciałbym to zrobić w kodzie tyłu. ..
Czy ktoś może wskazać mi właściwy kierunek?
Dzięki
To naprawdę eleganckie - spróbuję tego teraz. [EDIT] Błąd: Nie można animować właściwości "Kolor" w "System.Windows.Media.SolidColorBrush", ponieważ obiekt jest zamknięty lub zamrożony. [My code]: \t \t Dim br Jak SolidColorBrush = DirectCast ((PulseLogo.Foreground) SolidColorBrush) \t \t PulseLogo.Foreground.BeginAnimation (SolidColorBrush.ColorProperty, F) „Dzięki za pomoc – Basic
Niestety, człowiek, ja zawiedli. Robiłem to tylko ze scenorysami i naiwnie zakładałem, że mogę to bezpośrednio przetłumaczyć na wywołanie BeginAnimation, co było błędem. Zaktualizowałem odpowiedź, teraz z faktycznym przetestowanym kodem \ * gasp \ * uczciwego-do-dobroci - mam nadzieję, że to działa lepiej. – itowlson
Nie martw się o C# - Są bardzo podobne, to niewiele więcej niż dialekt :) Dzięki za zaktualizowane rozwiązanie - działa bezbłędnie. – Basic