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

标签 c# colors windows-store-apps hex solidcolorbrush

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

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

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 Canvas 控件时),这不适用于我的代码以根据选择的颜色:

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"))
. . .

来自 here我得到了这些建议:

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

...但是“ColorConverter”和“绘图”在我的应用程序中无法解析。如何从十六进制颜色值中获取人类可读的名称?

最佳答案

不存在从数字到名称的映射,但是 Colors 类将名称映射到数字。您可以使用反射来构建反向映射。

请参阅之前的答案以获取示例代码: How to convert a Windows.UI.Color into a string color name in a Windows Universal app

关于c# - 如何将十六进制颜色值转换为其人类可读的字符串表示形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27216793/

相关文章:

c# - 如何在gridview中排列数据表列?

c# - 使用客户端 Web 服务时出现内容错误

php - 按颜色对照片进行分组

python - 图像中物体的颜色检测

.net - 如何访问Windows.Management.Deployment命名空间?

c# - 使用 Selenium C# 的表中的行数

c# - 如何使用 c# 和 Xaml 引用在 Windows 8 应用程序中的每个组之前重复的相同按钮?

javascript - 使用javascript边框颜色消失

c# - 适用于 Windows 应用商店应用程序的 .NET : UrlEncode

c# - Azure StorageException 由于其保护级别而无法访问