加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将十六进制颜色转换为整数

发布时间:2020-12-16 01:56:36 所属栏目:百科 来源:网络整理
导读:这是我在数据库中的整数颜色:“8689404”. 我把它改成颜色如下: Color = ColorHelper.FromArgb(255,byte.Parse(Event.LABELCOLOR.Value.ToString("X8").Substring(6,2),NumberStyles.HexNumber),byte.Parse(Event.LABELCOLOR.Value.ToString("X8").Substri
这是我在数据库中的整数颜色:“8689404”.

我把它改成颜色如下:

Color = ColorHelper.FromArgb(255,byte.Parse(Event.LABELCOLOR.Value.ToString("X8").Substring(6,2),NumberStyles.HexNumber),byte.Parse(Event.LABELCOLOR.Value.ToString("X8").Substring(4,byte.Parse(Event.LABELCOLOR.Value.ToString("X8").Substring(2,NumberStyles.HexNumber))

这给了我颜色字符串“#FFFC9684”

现在问题是我无法将此颜色字符串解析回整数,以便我可以将其保存在数据库中.
我现在的是:

byte A = byte.Parse(labelcolor.Color.TrimStart('#').Substring(0,System.Globalization.NumberStyles.HexNumber);
byte B = byte.Parse(labelcolor.Color.TrimStart('#').Substring(6,System.Globalization.NumberStyles.HexNumber);
byte G = byte.Parse(labelcolor.Color.TrimStart('#').Substring(4,System.Globalization.NumberStyles.HexNumber);
byte R = byte.Parse(labelcolor.Color.TrimStart('#').Substring(2,System.Globalization.NumberStyles.HexNumber);

这给了我:

A = 255
B = 132
G = 150
R = 252

这些值是正确的,但我无法将它们与“8689404”进行比较

根据我的发现:

B = 132 = 84 
G = 150 = 96
R = 252 = FC
A = 255 = FF

这就是我所拥有的,我怎么能有这个颜色字符串的整数.我在WinRT工作.任何帮助!!!提前致谢

解决方法

这将产生您想要的正确小数值:

int decValue = int.Parse("8496FC",System.Globalization.NumberStyles.HexNumber);

如您所见,用于生成十进制值的十六进制值由以下颜色组件组成:

B (84) G (96) R (FC)

随着A组件的下降.

这可以通过使用完整十六进制颜色的子字符串来计算,如下所示:

string colour = labelcolor.Color.TrimStart('#');
string R = colour.Substring(2,2);
string G = colour.Substring(4,2);
string B = colour.Substring(6,2);

你可以这样使用:

int decValue = int.Parse(B + G + R,System.Globalization.NumberStyles.HexNumber);
//decValue = 8689404

Here is a working example

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读