这些数字存储在数据库中。它们源自 Delphi 代码。尽管我认为他们遵循某种标准。我努力了Color.FromArgb(255);
但我知道第一个是红色(在 delphi 方面),而在 ASP.NET 中它认为它是蓝色的Color [A=0, R=0, G=0, B=255]
无论如何,我希望将这些数字转换为十六进制。 IE。 #000000,#FFFF99 等等
任何人都知道如何将这些整数(参见数据库图片)转换为十六进制。
德尔福颜色(TColor
) are XXBBGGRR
当不是来自调色板或特殊颜色时。
See 本文有关格式的更多详细信息(以及其他特殊情况)。文章被指出克里斯蒂安·K还包含一些特殊情况的详细信息。
标准颜色
要转换为标准颜色,您应该使用类似以下内容的内容:
var color = Color.FromArgb(0xFF, c & 0xFF, (c >> 8) & 0xFF, (c >> 16) & 0xFF);
要转换为十六进制,:
string ColorToHex(Color color)
{
return string.Format("#{0:X2}{1:X2}{2:X2}",
color.R, color.G, color.B);
}
系统颜色
对于系统颜色(数据库中的负值),它们只是由0x80000000
.
谢谢大卫赫夫南的信息。
示例代码
Color DelphiColorToColor(uint delphiColor)
{
switch((delphiColor >> 24) & 0xFF)
{
case 0x01: // Indexed
case 0xFF: // Error
return Color.Transparent;
case 0x80: // System
return Color.FromKnownColor((KnownColor)(delphiColor & 0xFFFFFF));
default:
var r = (int)(delphiColor & 0xFF);
var g = (int)((delphiColor >> 8) & 0xFF);
var b = (int)((delphiColor >> 16) & 0xFF);
return Color.FromArgb(r, g, b);
}
}
void Main()
{
unchecked
{
Console.WriteLine(DelphiColorToColor((uint)(-2147483646)));
Console.WriteLine(DelphiColorToColor(
(uint)KnownColor.ActiveCaption | 0x80000000
));
Console.WriteLine(DelphiColorToColor(0x00FF8000));
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)