Ich frage mich, ob mir jemand helfen kann - ich habe ein Label, das ich zwischen zwei beliebigen Farben überblenden kann, wenn eine Methode im Code dahinter aufgerufen wird.WPF ColorAnimation für eine Brush-Eigenschaft
Mein bester Versuch so weit:
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
Das Problem, das ich habe ist, dass Color ein Media.Color zurückgibt und der Objekttyp für den Vordergrund ist Pinsel.
Ich weiß, wie man den richtigen Pinsel erstellt, aber nicht wie man es in einer Animation macht.
Von googeln, es scheint, ich brauche einen Konverter:
<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
aber alle Beispiele, die ich binden es in XAML, um die Animation gesehen habe - und ich möchte es in der Code-behind zu tun. ..
Kann mir bitte jemand in die richtige Richtung zeigen?
Dank
Das ist wirklich elegant - ich werde es jetzt versuchen. [EDIT] Fehler: Die 'Color' Eigenschaft auf 'System.Windows.Media.SolidColorBrush' kann nicht animiert werden, da das Objekt versiegelt oder eingefroren ist. [Mein Code]: \t \t Dim br Wie SolidColorBrush = Direct ((PulseLogo.Foreground), SolidColorBrush) \t \t PulseLogo.Foreground.BeginAnimation (SolidColorBrush.ColorProperty, F) ‚Vielen Dank für jede Hilfe – Basic
Sorry, Mann, ich durcheinander. Ich habe das bisher nur mit Storyboards gemacht und ich nahm naiv an, ich könnte das direkt in einen BeginAnimation-Call übersetzen, was falsch war. Ich habe die Antwort aktualisiert, jetzt mit tatsächlichen \ * Keuchen \ * ehrlich-zu-Gott getestet Code - hoffe, das funktioniert besser für Sie. – itowlson
Keine Sorge für die C# - Sie sind so ähnlich, es ist kaum mehr als ein Dialekt :) Danke für die aktualisierte Lösung - es funktioniert einwandfrei. – Basic