【问题标题】:Converting Colour Name to Hex in C#在 C# 中将颜色名称转换为十六进制
【发布时间】:2017-01-01 10:13:06
【问题描述】:

我编写了一个程序来从 ColorDialogBox 获取颜色并使用 ColorTranslator.ToHtml 将其转换为十六进制值,但它不返回十六进制值,而是返回纯色名称。有任何解决这个问题的方法吗 ?

这是我的代码:

   private void chooseClr_Click(object sender, EventArgs e) {

      colorDialog1.ShowDialog();
      Color checking = colorDialog1.Color;
      string hexColor = ColorTranslator.ToHtml(checking);
      MessageBox.Show(hexColor);
    }

【问题讨论】:

标签: c# .net


【解决方案1】:

如果它是有效的 HTML 颜色,则返回纯色名称。
如果您的颜色是自定义的(没有 HTML 名称),那么它会返回 HEX 值。

就我而言,最快最简单的解决方案是编写自定义函数:

public static class HexColorExtensions
{
    public static string ToHex(this Color c) => $"#{c.R:X2}{c.G:X2}{c.B:X2}";
}

现在,您可以这样简单地使用它:

Console.WriteLine(Color.Green.ToHex()); // #008000
Console.WriteLine(Color.Black.ToHex()); // #000000
Console.WriteLine(Color.FromArgb(1, 2, 3).ToHex()); // #010203

【讨论】:

  • 在信用到期时给予信用stackoverflow.com/a/37821008/7545489
  • @Denny 我不记得抄袭其他人的答案,所以我相信它只是相似的:) 特别是考虑到这是一个单行。
【解决方案2】:

这会将颜色转换为十六进制字符串

MessageBox.Show((colorDialog1.Color.ToArgb() & 0x00FFFFFF).ToString("X6"));

【讨论】:

    猜你喜欢
    • 2016-05-11
    • 1970-01-01
    • 2015-04-12
    • 2011-12-09
    • 2021-11-26
    • 2017-10-30
    • 2011-07-31
    相关资源
    最近更新 更多