Ricavare un colore WPF a partire dal nome

Scritto da  Massimo Bonanni il giovedì 28 aprile 2011  •  Linguaggio: C#,VB   • Livello: 100


La classe Color di System.Windows.Media mette a disposizione il metodo FromArgb() per recuperare un colore a partire dalle componenti Rosso, Verde e Blu e dalla componente Alfa ma non permette di ricavare un colore a partire dalla stringa indicante il suo nome (ad esempio "Red" per il rosso).
La seguente funzione consente di recuperare l'oggetto Color a partire dal nome:

VB.NET

Public Function GetColorFromName(ByVal strColor As String) As Color?
    Dim retColor As Color? = Nothing
    Try
        Dim propColor = GetType(Colors).GetProperty(strColor)
        If propColor IsNot Nothing Then
            Dim value = propColor.GetValue(Nothing, Nothing)
            If value IsNot Nothing Then
                retColor = CType(value, Color)
            End If
        End If
    Catch ex As Exception
        retColor = Nothing
    End Try
    Return retColor
End Function

 

C#

public Nullable<Color> GetColorFromName(string strColor)
{
    Nullable<Color> retColor = null;
    try
    {
        var propColor = typeof(Colors).GetProperty(strColor);
        if (propColor != null)
        {
            var value = propColor.GetValue(null, null);
            if (value != null)
            {
                retColor = (Color)value;
            }
        }
    }
    catch (Exception)
    {
        retColor = null;
    }
 
    return retColor;
}

 


Tags: WPF,windows presentation

 
x