如何区分“黑色”和“ActiveCaptionText”

Posted

技术标签:

【中文标题】如何区分“黑色”和“ActiveCaptionText”【英文标题】:How to differentiate between "Black" and "ActiveCaptionText" 【发布时间】:2021-12-24 17:57:39 【问题描述】:
void Main()

    (Color.FromName("Black").ToArgb() == Color.FromName("ActiveCaptionText").ToArgb()).Dump();
    //                           TRUE ^

这是在 LINQPad 中运行的一段代码。 有没有办法区分这两种颜色?

上下文:我收到了int 表示中的颜色。例如Black-16777216。我使用来自System.Drawing 命名空间KnownColor 的枚举来获取它的名称。

【问题讨论】:

您可以使用IsSystemColor 属性来区分它们。 “黑色”不是系统颜色,“ActiveCaptionText”是。或者不比较 ToArgb() 值,而是比较 Color 结构。 【参考方案1】:

如果要获取给定颜色值的名称,请使用ColorTranslator 类,该类使用内部已知颜色表来设置Color 结构的Name 属性.

示例

Console.WriteLine(Color.FromArgb(-16777216).Name);

// Prints: ff000000
// Whereas...

Console.WriteLine(ColorTranslator.FromWin32(-16777216).Name);

// Prints: Black

【讨论】:

以上是关于如何区分“黑色”和“ActiveCaptionText”的主要内容,如果未能解决你的问题,请参考以下文章

如何区分ESP8266系列 wifi模块

UI 自动化 - 如何区分正在显示的图像

16位BMP图的RGB444和RGB565如何区分

从彩色背景中提取黑色对象

如何在 iOS 7 上更改状态栏背景颜色和文本颜色?

黑白 iPhone 的区别? [复制]