Me pregunto si alguien me puede ayudar. Tengo una etiqueta que necesito para poder distinguir entre dos colores cuando se invoca un método en el código subyacente.WPF ColorAnimation para una propiedad de pincel
Mi mejor intento hasta el momento:
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
El problema que tengo es que ColorAnimation devuelve un Media.Color y el tipo de propiedad de primer plano es cepillo.
Sé cómo crear el pincel apropiado pero no cómo hacerlo en una animación.
De buscar en Google, parece que necesito un convertidor:
<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
pero todos los ejemplos que he visto que se unen a la animación en XAML - Y me gustaría hacerlo en el código subyacente. ..
¿Puede alguien señalarme en la dirección correcta?
Gracias
Eso es realmente elegante, lo intentaré ahora. Error [EDITAR]: No se puede animar la propiedad 'Color' en 'System.Windows.Media.SolidColorBrush' porque el objeto está sellado o congelado. [Mi código]: \t \t Dim br Como SolidColorBrush = DirectCast ((PulseLogo.Foreground), SolidColorBrush) \t \t PulseLogo.Foreground.BeginAnimation (SolidColorBrush.ColorProperty, F) 'Gracias por cualquier ayuda – Basic
Lo sentimos, hombre, hecho un desastre. Solo he hecho esto con guiones gráficos antes e ingenuamente asumí que podía traducirlo directamente en una llamada a BeginAnimation, lo cual era incorrecto. Actualicé la respuesta, ahora con el código real probado \ * gasp \ * honesto, espero que esto funcione mejor para usted. – itowlson
No se preocupe por el C# - Son muy similares, es poco más que un dialecto :) Gracias por la solución actualizada, funciona perfectamente. – Basic