Mi chiedo se qualcuno mi può aiutare - Ho un'etichetta che ho bisogno di essere in grado di dissolvenza incrociata tra qualsiasi 2 colori quando viene chiamato un metodo nel codice sottostante.WPF ColorAnimation per una proprietà Brush
mio miglior tentativo finora:
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
Il problema che ho è che ColorAnimation restituisce un Media.Color e Il tipo di proprietà per il primo piano è spazzola.
So come creare il pennello appropriato ma non come farlo in un'animazione.
Da usare Google, sembra che ho bisogno di un convertitore:
<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
ma tutti gli esempi che ho visto legano all'animazione in XAML - e mi piacerebbe farlo in codice dietro. ..
Qualcuno può indicarmi la direzione giusta?
Grazie
Questo è davvero elegante - ci proverò ora. [EDIT] Errore: impossibile animare la proprietà 'Color' su 'System.Windows.Media.SolidColorBrush' perché l'oggetto è sigillato o congelato. [Il mio codice]: \t \t Dim br Come SolidColorBrush = DirectCast ((PulseLogo.Foreground), SolidColorBrush) \t \t PulseLogo.Foreground.BeginAnimation (SolidColorBrush.ColorProperty, F) 'Grazie per qualsiasi aiuto – Basic
Siamo spiacenti, uomo, incasinato. L'ho fatto solo con gli storyboard e ho ingenuamente supposto di poterlo tradurre direttamente in una chiamata BeginAnimation, che era sbagliata. Ho aggiornato la risposta, ora con il codice effettivo di prova di "gasp \" onesto-buono, speriamo che funzioni meglio per voi. – itowlson
Nessun problema per il C# - Sono così simili, è poco più di un dialetto :) Grazie per la soluzione aggiornata - funziona perfettamente. – Basic