internal static Color RdlStringToColor(string value) { if (value[0] == '#') { return(RgbStringToColor(value)); } Color result = FromName(value); if (!result.IsKnownColor) { throw new ArgumentException(SRErrors.InvalidColor(value)); } return(result); }
private static Color RgbStringToColor(string value) { byte alpha = byte.MaxValue; if (value == "#00ffffff") { return(Color.Transparent); } if (value == "#00000000") { return(Color.Empty); } bool flag = true; if ((value.Length != 7 && value.Length != 9) || value[0] != '#') { flag = false; } else { string text = "abcdefABCDEF"; for (int i = 1; i < value.Length; i++) { if (!char.IsDigit(value[i]) && -1 == text.IndexOf(value[i])) { flag = false; break; } } } if (flag) { int num = 1; if (value.Length == 9) { alpha = Convert.ToByte(value.Substring(num, 2), 16); num += 2; } byte red = Convert.ToByte(value.Substring(num, 2), 16); byte green = Convert.ToByte(value.Substring(num + 2, 2), 16); byte blue = Convert.ToByte(value.Substring(num + 4, 2), 16); return(Color.FromArgb(alpha, red, green, blue)); } throw new ArgumentException(SRErrors.InvalidColor(value)); }