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

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

【问题讨论】:

  • 请注意,如果您从查询字符串中获取十六进制值,则哈希将被 URL 编码为 %23。

标签: c# .net colors system.drawing.color


【解决方案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。
    猜你喜欢
    • 2010-12-27
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2014-02-09
    相关资源
    最近更新 更多