如何将 C# 中的颜色动态更改为十六进制值?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1038014/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-06 06:41:45  来源:igfitidea点击:

How do I dynamically change color in C# to a hex value?

c#asp.netuser-interface

提问by Lill Lansey

I know how to set a control's BackColor dynamically in C# to a named color with a statement such as Label1.BackColor = Color.LightSteelBlue; ( using System.Drawing; )

我知道如何使用诸如 Label1.BackColor = Color.LightSteelBlue; 之类的语句在 C# 中将控件的 BackColor 动态设置为命名颜色。( 使用 System.Drawing; )

But how do I convert a hex value into a System.Color , ie Label1.BackColor = "#B5C7DE

但是如何将十六进制值转换为 System.Color ,即 Label1.BackColor = "#B5C7DE

采纳答案by Richard

I would use the color translator as so:

我会这样使用颜色转换器:

var color = ColorTranslator.FromHtml("#FF1133");

Hope this helps.

希望这可以帮助。

回答by Lou Franco

Color.FromArgb(0xB5C7DE);

or, if you want to parse the string

或者,如果你想解析字符串

private Color ParseColor(string s, Color defaultColor)
{
    try
    {
        ColorConverter cc = new ColorConverter();
        Color c = (Color)(cc.ConvertFromString(s));

        if (c != null)
        {
            return c;
        }
    }
    catch (Exception)
    {
    }
    return defaultColor;
}

This function just returns the default if it can't parse s. You could just let the exception through if you'd rather handle exceptions yourself.

如果无法解析 s,此函数仅返回默认值。如果您更愿意自己处理异常,则可以让异常通过。

回答by Thomas Levesque

string hexColor = "#B5C7DE";
Color color = ColorTranslator.FromHtml(hexColor);

回答by heavyd

You can use the Color.FromArgb method:

您可以使用 Color.FromArgb 方法:

Label1.BackColor = Color.FromArgb(0xB5C7DE);