首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中将颜色名称转换为十六进制

在C#中将颜色名称转换为十六进制
EN

Stack Overflow用户
提问于 2016-08-25 13:41:52
回答 2查看 2.9K关注 0票数 0

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

下面是我的代码:

代码语言:javascript
复制
   private void chooseClr_Click(object sender, EventArgs e) {

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

回答 2

Stack Overflow用户

发布于 2016-08-25 13:49:48

它返回纯色名称,如果它是有效的HTML颜色。

如果您的颜色是自定义的(没有HTML名称),则返回十六进制值。

对我来说,最快最简单的解决方案是编写一个自定义函数:

代码语言:javascript
复制
public static class HexColorExtensions
{
    public static string ToHex(this Color c) => $"#{c.R:X2}{c.G:X2}{c.B:X2}";
}

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

代码语言:javascript
复制
Console.WriteLine(Color.Green.ToHex()); // #008000
Console.WriteLine(Color.Black.ToHex()); // #000000
Console.WriteLine(Color.FromArgb(1, 2, 3).ToHex()); // #010203
票数 3
EN

Stack Overflow用户

发布于 2016-08-25 13:52:09

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

代码语言:javascript
复制
MessageBox.Show((colorDialog1.Color.ToArgb() & 0x00FFFFFF).ToString("X6"));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39137486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档