Having recently started a new C# project that I am using hex colour codes with (e.g. #000000), I thought I would write a simple RGB colour handling class that converts the hex colour code into RGB codes for me. And here it is...
/// A helper class used to hold the RGB values of a hex colour e.g. #000000 /// </summary> public class RGBColour { private string _HexRef = String.Empty; public string HexRef { get { return this._HexRef; } set { if (!value.StartsWith("#")) throw new Exception("The hex colour reference must start with a #. e.g. #000000"); if (value.Length < 7) throw new Exception("The hex colour reference must be 7 characters. e.g. #000000"); this._HexRef = value; Color c = ColorTranslator.FromHtml(value); this._R = Convert.ToInt32(c.R); this._G = Convert.ToInt32(c.G); this._B = Convert.ToInt32(c.B); } } private int _R = 0; public int R { get { return this._R; } } private int _G = 0; public int G { get { return this._G; } } private int _B = 0; public int B { get { return this._B; } } public RGBColour() { } public RGBColour(string hexRef) { this.HexRef = hexRef; } }
It quite simply uses the System.Drawing.ColorTranslator.FromHtml method to convert the hex value into a System.Drawing.Color object. The Color RGB properties are then converted to an int32.
This can then be used like this...
RGBColour rgb = new RGBColour("#000000"); xl.ActiveCell.Interior.Color = xl.RGB(rgb.R, rgb.G, rgb.B);
No comments:
Post a Comment