如何在 Windows 通用应用程序中将 Windows.UI.Color 转换为字符串颜色名称

2024-01-08

我正在尝试将 Windows.UI.Color 转换为 Windows 8.1 通用应用程序中的简单字符串颜色名称。

我已经有了 Color 的 ARGB 值(甚至是十六进制代码),我只想要其关联的已知名称(例如,从 #7AFF7A7A 到“salmon”)。由于 System.Drawing 在 WinRT 中不可用,因此我无法使用 ColorConverter 或 ColorTranslator。

我尝试将 Windows.UI.Color 对象转换为 SolidColorBrush 甚至 Brush,但它们都不提供名称转换功能。

这样做的最佳方法是什么?


Colors 类包含许多颜色的命名属性。没有预设的反向查找,但您可以使用反射来构建您自己的从颜色到颜色名称的映射。

Dictionary<Color, string> ColorNames = new Dictionary<Color, string>();
foreach (var color in typeof(Colors).GetRuntimeProperties())
{
    ColorNames[(Color)color.GetValue(null)] = color.Name;
}

Test:

Color c = Colors.AliceBlue;
Debug.WriteLine("{0} is {1}", c, ColorNames[c]);

Result:

#FFF0F8FF is AliceBlue

注意重复项(例如 Colors.Aqua 和 Colors.Cyan 都映射到 #FF00FFFF)。我的循环更喜欢第二个。

根据 Color 对象的来源,您可能想要关闭字符串十六进制值而不是 Color 对象本身,如果您真的很聪明,您可以进行最接近的匹配,而不仅仅是精确匹配(实现留给读者作为练习) :) )

--Rob

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Windows 通用应用程序中将 Windows.UI.Color 转换为字符串颜色名称 的相关文章

  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • C++:无法使用scoped_allocator_adaptor传播polymorphic_allocator

    我有一个vector
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 如何在 WPF RichTextBox 中跟踪 TextPointer?

    我正在尝试了解 WPF RichTextBox 中的 TextPointer 类 我希望能够跟踪它们 以便我可以将信息与文本中的区域相关联 我目前正在使用一个非常简单的示例来尝试弄清楚发生了什么 在 PreviewKeyDown 事件中 我
  • 如何在 Team Foundation 上强制发表有意义的签入评论?

    我有一个开发团队有一个坏习惯 他们写道poor签入评论 当我们必须在团队基础上查看文件的历史记录时 这使得它成为一场噩梦 我已经启用了变更集评论政策 这样他们甚至可以在签到时留下评论 否则他们不会 我们就团队的工作质量进行了一些讨论 他们很
  • 我的 strlcpy 版本

    海湾合作委员会 4 4 4 c89 我的程序做了很多字符串处理 我不想使用 strncpy 因为它不会终止 我不能使用 strlcpy 因为它不可移植 只是几个问题 我怎样才能让我的函数正常运行 以确保它完全安全稳定 单元测试 这对于生产来
  • Matplotlib Scatter - ValueError:RGBA 序列的长度应为 3 或 4

    我正在尝试为我的功能绘制图表 但不断收到此错误 ValueError RGBA sequence should have length 3 or 4 每当我只有 6 种形状时 代码就可以完美运行 但现在我将其增加到 10 种 它就不起作用了
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 在 URL 中发送之前对特殊字符进行百分比编码

    我需要传递特殊字符 如 等 Facebook Twitter 和此类社交网站的 URL 为此 我将这些字符替换为 URL 转义码 return valToEncode Replace 21 Replace 23 Replace 24 Rep
  • GDK3/GTK3窗口更新的精确定时

    我有一个使用 GTK 用 C 语言编写的应用程序 尽管该语言对于这个问题可能并不重要 这个应用程序有全屏gtk window与单个gtk drawing area 对于绘图区域 我已经通过注册了一个刻度回调gtk widget add ti
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 如何将 java.util.Date 实例的时间设置为 00:00:00?

    我有一个类型的变量java util Date 如何将时间部分设置为 00 00 00 我不允许使用 Apache Commons 库或 JodaTime 这java util Calendar可能是我唯一的选择 要将时间从Date完全反对
  • 通过创建时间戳来跟踪更改

    我发现原始代码 Excel VBA 可以很好地跟踪一列 Private Sub Worksheet Change ByVal Target As Range Update 20140722 Dim WorkRng As Range Dim
  • 在 bash 中使用多个核心

    我有一个 Linux 工具 可以 大大简化 剪切 illumnaSeq 文件中指定的序列 我有 32 个锉刀要磨 处理一份文件大约需要 5 小时 我有一台centos服务器 它有128个核心 我找到了一些解决方案 但每种解决方案的工作方式都
  • 是否可以像OpenCV一样在android中使用Dlib?

    好吧 我需要一个关于在 android 中使用 Dlib 的清晰网站或信息 我在网上搜索了一个使用 Dlib 的 Android 示例应用程序 但我仍然找不到 我仍然不确定我们是否可以使用android中的Dlib方法来生成 a文件 以便我
  • “字符串”不包含“包含”的定义

    我有这样的声明 var vals from StandAloneUserPayment saup in Session Query
  • 是否可以将 JSF+Facelets 与 HTML 4/5 一起使用?

    Facelets 依赖 XML 命名空间来与 XHTML 配合使用 HTML 4 怎么样 据我所知 HTML 5 不支持命名空间 HTML 5 还有一些 XHTML 中不可用的新元素 即使 HTML 4 和 XHTML 在它们支持的元素和属
  • 令人困惑的按键事件案例

    背景 开发一个用于屏幕投射的基本开源键盘和鼠标屏幕显示桌面应用程序 称为KmCaster https github com DaveJarvis kmcaster 该应用程序使用JNativeHook https github com kw
  • php do while 不适用于 next->rowset

    你好 我的电脑上有我的 wamp 服务器 PHP 5 4 12 阿帕奇2 4 4 MYSQL 5 6 12 还有我的服务器 PHP 5 5 3 阿帕奇2 4 6 MYSQL 5 5 37 当我在服务器上执行此功能时 出现此错误 SQLSTA
  • 用于分割 CSV 的正则表达式

    我知道这个 或类似的 已经被问过很多次了 但是在尝试了多种可能性之后 我还没有找到一个 100 工作的正则表达式 我有一个 CSV 文件 我试图将其拆分为一个数组 但遇到两个问题 带引号的逗号和空元素 CSV 看起来像 123 2 99 A
  • 配置 Django URLS.py 以在 URL 中以 / 重写后保留 #anchors

    在我的 django 应用程序中 我将 URLS PY 配置为接受对 community user id 和 community user id 的请求 url r P
  • 使用构造函数初始化 F# 对象

    I 我知道 https stackoverflow com questions 371878 object initialization syntax在 F 中 如果您有以下格式的 C 类 public class Person publi
  • UNITY 触摸位置到世界位置 2D

    如何将触摸位置 在手机上 转换为世界位置 例如 如果我的手机屏幕尺寸为 1440 x 2560 而我在手机上的触摸位置为 X 600 Y 700 我如何将该位置转换为统一的世界位置 我需要它 这样我才能知道用户将手指放在哪里 有一种方法已经
  • 如何将 props 从一个组件传递到另一个组件

    我有两个组件 一个在另一个组件内部渲染 父组件有子组件需要的一些操作 但我不知道如何将其传递下去 控制台日志最后 我需要将操作传递给孩子 因为孩子需要该操作 问题是孩子已经在同一屏幕中渲染 所以我不知道如何传递这些信息 父组件半径 rend
  • BigQueryIO 读取与 fromQuery

    假设在 Dataflow Apache Beam 程序中 我正在尝试读取数据呈指数增长的表 我想提高读取的性能 BigQueryIO Read from projectid dataset tablename or BigQueryIO R
  • 如何拉伸背景图像以覆盖整个 HTML 元素?

    我正在尝试获取 HTML 元素 body div 等 的背景图像以拉伸其整个宽度和高度 运气不太好 是否有可能 或者除了背景图像之外我还必须以其他方式做到这一点 我当前的CSS是 body background position left
  • Windows 上的 Gradle 构建错误“无法为文件创建 MD5 哈希值”

    我正在现有项目上运行 gradle 构建 但遇到了下面的错误 出了什么问题 在最新检查期间无法捕获任务 someTask 属性 destinationDir 的输出文件快照 无法为文件 my project dir gradle 3 5 f
  • 无效的 Swift 支持 - 文件 libswiftAVFoundation.dylib 没有正确的代码签名

    2 天前一切正常 现在 当我添加外部测试 Appstore 连接的构建时 它说无效的二进制文件 我正在使用 flutter 进行应用程序开发 ITMS 90433 无效的 Swift 支持 文件 libswiftAVFoundation d
  • 如何在 vc++ 6.0 和 vc++ 2005 中获取 GIF 透明度颜色

    如何在 vc 6 0 和 vc 2005 中获得 GIF 透明度颜色 See the GIF 规格 http www martinreddy net gfx 2d GIF89a txt GIF 的调色板最多有 256 种可能的颜色 背景颜色
  • 在 Eclipse 中查看大型 XML 文件?

    我正在开发一个涉及一些大型 XML 文件 从 50MB 到超过 1GB 的项目 如果我可以在 Eclipse 中查看它们 简单的文本视图就可以了 而 Java 不会耗尽堆空间 那就太好了 我尝试在 eclipse ini 中调整 jvm 可
  • 如何在 Windows 通用应用程序中将 Windows.UI.Color 转换为字符串颜色名称

    我正在尝试将 Windows UI Color 转换为 Windows 8 1 通用应用程序中的简单字符串颜色名称 我已经有了 Color 的 ARGB 值 甚至是十六进制代码 我只想要其关联的已知名称 例如 从 7AFF7A7A 到 sa