Ejemplo n.º 1
0
        /// <inheritdoc/>
        public override object ConvertFrom(CultureInfo culture, string value, Type propertyType)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                return(base.ConvertFrom(culture, value, propertyType));
            }

            // Special case. HTML requires LightGrey, but NamedColors has LightGray to conform with System.Drawing
            // Check early on.
            if (value.Equals("LightGrey", StringComparison.OrdinalIgnoreCase))
            {
                return(Rgba32.LightGray);
            }

            // Numeric r,g,b - r,g,b,a
            char separator = culture.TextInfo.ListSeparator[0];

            if (value.Contains(separator.ToString()))
            {
                string[] components = value.Split(separator);

                bool convert = true;
                foreach (string component in components)
                {
                    if (!NumberRegex.IsMatch(component))
                    {
                        convert = false;
                    }
                }

                if (convert)
                {
                    List <byte> rgba = CommandParser.Instance.ParseValue <List <byte> >(value);

                    return(rgba.Count == 4
                        ? ColorBuilder <Rgba32> .FromRGBA(rgba[0], rgba[1], rgba[2], rgba[3])
                        : ColorBuilder <Rgba32> .FromRGB(rgba[0], rgba[1], rgba[2]));
                }
            }

            // Hex colors rgb, rrggbb, rrggbbaa
            if (HexColorRegex.IsMatch(value))
            {
                return(Rgba32.FromHex(value));
            }

            // Named colors
            IDictionary <string, Rgba32> table = ColorConstantsTable.Value;

            return(table.ContainsKey(value) ? table[value] : base.ConvertFrom(culture, value, propertyType));
        }
 public static void ToImage(this MatrixData input, string fileName)
 {
     using (Image <Rgba32> image = new Image <Rgba32>(input.NumberOfRows, input.NumberOfColumns))
     {
         for (int r = 0; r < input.NumberOfRows; r++)
         {
             for (int c = 0; c < input.NumberOfColumns; c++)
             {
                 byte b = byte.Parse(((double)input[r, c]).ToString());
                 image[r, c] = ColorBuilder <Rgba32> .FromRGB(b, b, b);
             }
         }
         image.SaveAsBmp(File.OpenWrite(fileName));
     }
 }