在 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 对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何从其十六进制 RGB 字符串创建 System.Drawing.Color?