如何将十六进制颜色值转换为其人类可读的字符串表示形式

本文关键字:字符串 表示 人类 十六进制 颜色值 转换 | 更新日期: 2023-09-27 18:32:44

我想存储一个颜色十六进制值(例如"#FFFF1493")作为其"人性化"名称(例如"DeepPink")。

在SLaks和nvoigt的帮助下,我现在得到了这段代码:

if (sender is Canvas)
{
    var canvas = sender as Canvas;
    var brush = canvas.Background as SolidColorBrush;
    var color = brush.Color;
    String brushColorAsStr = color.ToString();
    IAppSettings appSettings;
    if (App.SaveSettingsLocally)
    {
        appSettings = new AppSettingLocal();
    }
    else
    {
        appSettings = new AppSettingsRemote();
    }
    appSettings.SaveSetting(VisitsConsts.APP_BAR_COLOR_SETTING, brushColorAsStr);
}

。但是brushColorAsStr中的值是"#FFFF1493"(当我单击DeepPink画布控件时),并且这与我的代码无法根据所选颜色更改应用栏颜色:

String brushColor = appSettings.GetSetting(VisitsConsts.APP_BAR_COLOR_SETTING);
if (null == brushColor) return;
if (brushColor.Equals("Blue"))
{
    CmdBar.Background = new SolidColorBrush(Colors.Blue);
}
else if (brushColor.Equals("Aqua"))
. . .

从这里我得到了这些建议:

Color colour = (Color)ColorConverter.ConvertFromString(brushColorAsStr);
System.Drawing.Color col = System.Drawing.ColorTranslator.FromHtml(brushColorAsStr);

。但是"颜色转换器"和"绘图"在我的应用程序中无法解析。如何从十六进制颜色值中获得人类可读的名称?

如何将十六进制颜色值转换为其人类可读的字符串表示形式

没有从数字到名称的映射,但 Colors 类从名称映射到数字。可以使用反射来构建反向映射。

有关示例代码,请参阅前面的答案:如何在 Windows Universal app

>

这些链接可能对您有所帮助:

将十六进制代码转换为颜色名称

http://www.xiirus.net/articles/article-c-convert-drawing_color-to-html-hex-color-value-and-back-cc8mp.aspx

https://social.msdn.microsoft.com/Forums/en-US/f92a8d0a-8116-4fa6-8072-0b0f09536847/how-to-convert-the-hex-value-into-its-equivalent-color-name?forum=wpf