Mega Code Archive

 
Categories / C# / WPF
 

Color Converter

//http://aspascension.codeplex.com/ //Microsoft Public License (Ms-PL) using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Reflection; using System.Windows.Data; namespace ASPAscension.Silverlight.Converters {     public class ColorConverter : IValueConverter     {         public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)         {             if (value.GetType() == typeof(String))             {                 string val = value as string;                 Color c;                 if (val.StartsWith("#"))                 {                     val = val.Replace("#", "");                       byte a = System.Convert.ToByte("ff", 16);                       byte pos = 0;                       if (val.Length == 8)                       {                           a = System.Convert.ToByte(val.Substring(pos, 2), 16);                           pos = 2;                       }                       byte r = System.Convert.ToByte(val.Substring(pos, 2), 16);                       pos += 2;                       byte g = System.Convert.ToByte(val.Substring(pos, 2), 16);                       pos += 2;                       byte b = System.Convert.ToByte(val.Substring(pos, 2), 16);                       c = Color.FromArgb(a, r, g, b);                       return new SolidColorBrush(c);                 }                 else                 {                     try                     {                         c = GetColorFromString(value as string);                         return new SolidColorBrush(c);                     }                     catch (InvalidCastException ex)                     {                         return null;                     }                 }             }             return null;         }         public static Color GetColorFromString(string colorString)         {             Type colorType = (typeof(System.Windows.Media.Colors));             if (colorType.GetProperty(colorString) != null)             {                 object color = colorType.InvokeMember(colorString, BindingFlags.GetProperty, null, null, null);                 try                 {                     return (Color)color;                 }                 catch                 {                     throw new InvalidCastException("Color not defined");                 }             }             return Colors.Transparent;         }         public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)         {             SolidColorBrush val = value as SolidColorBrush;             return val.Color.ToString();             //if (typeof(Colors).GetProperty(val.Color.ToString()) != null)             //    return typeof(Colors).GetProperty(val.Color.ToString()).GetValue(val, null);             //else             //    return "#" + val.Color.A.ToString() + val.Color.R.ToString() + val.Color.G.ToString() + val.Color.B.ToString();         }     } }