【问题标题】:How can I convert a hex Color value to its human-readable string representation?如何将十六进制颜色值转换为其人类可读的字符串表示形式?
【发布时间】:2015-01-28 18:34:12
【问题描述】:

我想存储一个颜色十六进制值(例如“#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 画布控件时),这不适用于我的代码来更改基于选择的颜色:

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”和“Drawing”在我的应用程序中无法解析。如何从十六进制颜色值中获取人类可读的名称?

【问题讨论】:

  • 您可能应该做的第一件事就是去掉 alpha 通道,即前两个十六进制数字。..

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


【解决方案1】:

【讨论】:

  • 不;那些也使用我无法使用/我无法解决的类。不要告诉我我最终将不得不执行“if color == "gobbledygookHexJunq"...”
【解决方案2】:

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

有关示例代码,请参见之前的答案: How to convert a Windows.UI.Color into a string color name in a Windows Universal app

【讨论】:

    猜你喜欢
    • 2014-12-05
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 2015-05-28
    相关资源
    最近更新 更多