如何将十六进制颜色值转换为其人类可读的字符串表示形式
本文关键字:字符串 表示 人类 十六进制 颜色值 转换 | 更新日期: 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