BillWoodruff
Я предполагаю, что вы имеете дело с цветовыми значениями, упорядоченными BGR, используемыми в MS Office.
Я предлагаю вам создать свою собственную библиотеку функций преобразования цвета: вот начало из моей собственной библиотеки:
using System;
using System.Drawing;
using System.Globalization;
namespace ColorExtensions
{
public static class RGBExtensions
{
public static Color RGBColorToBGRColor(this Color rgbColor)
{
return Color.FromArgb(rgbColor.A, rgbColor.B, rgbColor.G, rgbColor.R);
}
public static Color BGRColorToRGBColor(this Color bgrColor)
{
return bgrColor.RGBColorToBGRColor();
}
public static Color RGBIntToBGRColor(this int rgbColor)
{
var byteAry = BitConverter.GetBytes(rgbColor);
return Color.FromArgb(byteAry[3], byteAry[0], byteAry[1], byteAry[2]);
}
public static Color BGRIntToRGBColor(this int bgrColor)
{
return bgrColor.RGBIntToBGRColor();
}
public static int RGBColorToBGRInt(this Color rgbColor)
{
return rgbColor.ToArgb().RGBIntToBGRColor().ToArgb();
}
public static int BGRColorToRGBInt(this Color bgrColor)
{
return bgrColor.ToArgb().BGRIntToRGBColor().ToArgb();
}
/* left for you to write
public static string BGRColorToRGBString(this Color bgrColor, bool hexout = false)
{
}
public static string RGBColorToBGRString(this Color rgbColor, bool hexout = false)
{
}
*/
public static string ColorToHexString(this Color color)
{
return color.ToArgb().ToString("X");
}
private static CultureInfo provider = CultureInfo.InvariantCulture;
public static (bool, Color) HexStringToColor(this string colorstring)
{
int i = 0;
if (int.TryParse(colorstring, NumberStyles.HexNumber, provider, out i))
{
return (true, Color.FromArgb(i));
}
return (false, Color.Empty);
}
}
}
Тест в каком-то методе:
// required using ColorExtensions;
string hex = "FAF1E6";
int toint = int.Parse(hex, NumberStyles.HexNumber);
string backtostring = toint.ToString("X");
var clr = hex.HexStringToColor();
string backtohex;
if (clr.Item1) backtohex = (clr.Item2).ColorToHexString();
int rgb = 16445926;
Color bgr = rgb.RGBIntToBGRColor();
Color backtorgbcolor = bgr.BGRColorToRGBColor();
int backtoint = bgr.BGRColorToRGBInt();