我编写了一个程序来从 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);
}
Run Code Online (Sandbox Code Playgroud)
如果它是有效的 HTML 颜色,它会返回纯色名称。
如果您的颜色是自定义的(没有 HTML 名称),则它返回十六进制值。
对我来说,最快、最简单的解决方案是编写一个自定义函数:
public static class HexColorExtensions
{
public static string ToHex(this Color c) => $"#{c.R:X2}{c.G:X2}{c.B:X2}";
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以这样简单地使用它:
Console.WriteLine(Color.Green.ToHex()); // #008000
Console.WriteLine(Color.Black.ToHex()); // #000000
Console.WriteLine(Color.FromArgb(1, 2, 3).ToHex()); // #010203
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5215 次 |
最近记录: |