【发布时间】: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