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