C# &引用;系统“;警告颜色(红色)

C# &引用;系统“;警告颜色(红色),c#,wpf,windows,user-interface,colors,C#,Wpf,Windows,User Interface,Colors,我想在可能的情况下使用系统颜色。如何选择系统颜色中未包含的颜色 WPF类、WinForms类和API函数的COLOR.*常量都不包含可用于警告的颜色。警告通常是红色的,但不能保证它不会接近用户使用的系统颜色 我希望使用标准系统颜色在列表框中显示项目(未选中的项目通常为白色背景上的黑色文本,选中的项目为海军蓝背景上的白色,选中的未聚焦项目为浅灰色背景上的白色)。当一个项目有问题时(例如,与之相关的操作失败),我希望将其文本设置为红色以引起注意。对所有三种情况(选定、选定、未聚焦、未选定)使用单色已

我想在可能的情况下使用系统颜色。如何选择系统颜色中未包含的颜色

WPF类、WinForms类和API函数的
COLOR.*
常量都不包含可用于警告的颜色。警告通常是红色的,但不能保证它不会接近用户使用的系统颜色

我希望使用标准系统颜色在列表框中显示项目(未选中的项目通常为白色背景上的黑色文本,选中的项目为海军蓝背景上的白色,选中的未聚焦项目为浅灰色背景上的白色)。当一个项目有问题时(例如,与之相关的操作失败),我希望将其文本设置为红色以引起注意。对所有三种情况(选定、选定、未聚焦、未选定)使用单色已经有问题,因为我发现在浅灰色背景下很难阅读红色文本

仅使用自定义颜色从而避免问题是不可接受的行为。用户希望程序尊重他们的设置

如何为警告选择正确的颜色

“仅使用自定义颜色,因此 避免这个问题是不可接受的 用户希望程序 尊重他们的设置。”

但是用户在哪里为警告指定颜色


如果您想要一种与系统颜色相关的引人注目的颜色,您可以选择所选项目的颜色并使其饱和一点,或使其更红(例如,使其RGB红色分量为0xFF,并通过其他两个分量的方式取决于用户设置).

我遇到此类问题的最近一次是在一个项目中,我们实施了一些颜色操作,以确保CAD程序中的元素不会因用户更改背景颜色而“意外”隐藏。例如,如果背景颜色为黑色,CAD文件中有一些白色元素,则一切都很好。白色元素在黑色背景下明显可见。但是,如果用户更改为白色背景,则白色元素将不再可见。我们实现了一些逻辑来操纵(相当繁重地)元素颜色(在绘制过程中)以确保它是可见的。通常,只有当元素颜色与背景色完全相同时,才会使用此逻辑。后来,我们扩展了检查,以更改元素颜色(如果它“接近”背景色)。这是合理的成功,因为没有元素被意外隐藏。然而,结果的颜色有时相当可怕。这只是我不得不以编程方式处理颜色的一些背景

这是一本书。这可能是有限的用途,因为你不只是想要一个可见的颜色,你可能更喜欢使用红色(或其他颜色),只有在不容易阅读(或不明显表明有问题)的情况下才更改它

而不是玩弄RGB值

您可以使列表中的问题项具有白色背景,然后使用红色文本作为背景。我没有做过太多的UI编程,所以我无法告诉您这在实践中有多容易或难(更改列表框中单个项目的背景色)

使用我发布的第一个链接作为起点,你可以测试红色,看看它是否“易于阅读”,通过一些颜色数学。红色离背景色有多远?如果是“太近”,放弃,并获得一个更好的对比度颜色(这是不一样的颜色,你本来会画如果没有错误)

您可以为几个标准Windows配色方案中的每个方案定义“警告”颜色(或多个颜色)(通过切换到这些方案中的每个方案,定义满足给定文本颜色和背景颜色要求的警告颜色)。如果用户碰巧正在使用这些方案之一(或者至少如果背景颜色和文本颜色与您定义的背景/文本颜色组合之一相匹配),只需使用预定义的警告颜色之一。如果用户不是,请尝试通过将用户的背景色和文本颜色与预定义的颜色进行比较来找到可能有效的颜色,并使用最匹配的颜色。如果没有很好的匹配(即,根据某些标准,所有可能的预定义警告颜色都“不容易读取”),请尝试从头开始计算可见但与要替换的文本颜色不同的颜色

您可以定义几个离散的警告颜色,这些颜色在特定的颜色范围内很容易阅读。也许你定义了16种颜色。如果背景颜色在ColorRange1范围内,您可以选择使用Color1,Color2用于BackgroundColor2,等等。我不知道您需要定义多少种颜色,以确保对所有可能的颜色组合都有“良好”的选择。通过“手动”定义警告颜色,与在运行时生成警告颜色相比,您可能有更好的机会获得相对“美观”的颜色

如果您能够为给定的背景颜色(例如未选定)预定义单个警告颜色,则可以使用背景颜色之间的比率(例如未选定与选定的聚焦),并将该比率(或相反)应用于背景颜色,为选定的聚焦和未聚焦情况插入相应的警告颜色“基本”警告色


我不认为有那么多(或任何)这些建议中的一个特别好。它们只是我在阅读和思考你的问题时的一些想法。

可能有一种新的方法值得考虑。使用彩色图标,如windows事件日志。保持所有文本一致,并使用彩色图标从视觉上区分不同类型的数据。

我认为黄色和错误是红色的吗?@Nate恐怕在白色背景上显示黄色文本比显示红色文本更难。:)我很少看到黄色用于警告。可能是b