在 C# 中,如何使用十六进制值创建 System.Drawing.Color 对象? [复制]

Posted

技术标签:

【中文标题】在 C# 中,如何使用十六进制值创建 System.Drawing.Color 对象? [复制]【英文标题】:In C# , How can i create a System.Drawing.Color object using a hex value? [duplicate] 【发布时间】:2010-12-18 06:03:14 【问题描述】:

在 C# 中,如何使用 #FFFFF、#FGFG01 等值创建 System.Drawing.Color 对象...

【问题讨论】:

请注意,如果您从查询字符串中获取十六进制值,则哈希将被 URL 编码为 %23。 【参考方案1】:
string hexValue = "#000000"; // You do need the hash
Color colour = System.Drawing.ColorTranslator.Fromhtml(hexValue); // Yippee

编辑:您确实需要哈希,否则不会考虑 alpha 值。哎呀!

【讨论】:

“Yippee”的好答案+加分 不得不更改我的 if (color == Black) 比较,因为它们是两个不同的对象,所以条件永远不会成立。保留 yippee 评论 - 只为你! 是的。需要哈希。否则会报错【参考方案2】:

var my col = Color.FromArgb(int x);

请注意,您还需要指定一个 alpha 值(可能您需要 FF,即完全不透明,因此将 0xFF000000 添加到颜色十六进制值)

【讨论】:

+1 他可以使用 Int32.Parse 将十六进制字符串转换为 int,只需去掉 #。【参考方案3】:

您可以将值更改为以 FF 开头吗?例如。 FFFFFFFF = 白色。这是在开头添加alpha值。

如果是这样,只需使用System.Drawing.Color.FromArgb 解析值。它需要一个int,其中前 8 位是 alpha 值。 255 是不透明的。

要将字符串转换为 int,请使用 Int32.Parse。例如。

String HexColourValue = "FABFAB";
System.Drawing.Color colour = System.Drawing.Color.FromArgb(Int32.Parse("FF"+HexColourValue,
                              System.Globalization.NumberStyles.HexNumber));

确保HexColourValue 中没有“#”。

【讨论】:

【参考方案4】:
Color.FromArgb(Convert.ToInt32( str.Substring(1), 16 ));

【讨论】:

这不会给出透明的 aplha 值 0 吗? 是的,如果支持 alpha 的话。如果您想要不透明的颜色或将 0xff000000 添加到转换结果中,则必须使用 #FF123456。

以上是关于在 C# 中,如何使用十六进制值创建 System.Drawing.Color 对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何检测 C# 中的负十六进制值?

如何从其十六进制 RGB 字符串创建 System.Drawing.Color?

C#读写二进制文件

在 C# 中使用 System.Decimal 进行数学运算

C#中 combobox 显示数值和实际值怎么绑定

c# winform 如何实现16进制颜色值的转换