如何从Visual Studio的颜色对话框中获取十六进制颜色代码?

4

我在Visual Studio中有一个颜色对话框,我目前正在使用以下C#代码来显示颜色对话框并将颜色设置为面板:

private void ColorButton_Click(object sender, EventArgs e)
{
    if (colorDialog1.ShowDialog() == DialogResult.OK)
    {
        ColorPanel.BackColor = colorDialog1.Color;
    }
}

我该如何将标签设置为颜色选择器的十六进制颜色代码?

比我快了1秒钟... - Thorsten Dittmar
2
ColorTranslator.ToHtml(colorDialog1.Color); - Samurai Jack
1个回答

17

您可以尝试这个方法

  1. 获取颜色的 ARGB (Alpha, Red, Green, Blue) 表示。
  2. 过滤掉 Alpha 通道: & 0x00FFFFFF
  3. 将值格式化为十六进制 ("X6")

实现

  String code = (colorDialog1.Color.ToArgb() & 0x00FFFFFF).ToString("X6");

编辑:如果你想从代码中获取颜色,可以尝试使用FromArgb

  string code = "FFDDAA";

  Color color = Color.FromArgb(Convert.ToInt32(code, 16));

你应该在标记为重复的答案中也发布那个答案。 - fubo
@fubo:我明白了,谢谢!我也已经发布了(改编后的)答案到重复的问题上。 - Dmitry Bychenko
有人知道如何反转这个过程吗?从十六进制转换为颜色? - Mark
1
@Mark:尝试使用Color.FromArgbConvert.ToInt32(请参见我的编辑)。 - Dmitry Bychenko
@DmitryBychenko 我没能让它工作。最终我使用了 System.Drawing.ColorTranslator.FromHtml("#000000"); - Mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接