最接近的,我是来为这样的问题是在一个项目都是我们实施了一些颜色处理,以确保在CAD程序元素并非“意外”隐藏用户改变背景颜色。例如,如果背景颜色是黑色,并且CAD文件中有一些白色元素,则一切都很好。白色元素在黑色背景下显然是可见的。但是,如果用户更改为白色背景,则白色元素不再可见。我们实现了一些操作(非常重要)元素颜色(绘制期间)的逻辑,以确保它是可见的。通常情况下,只有元素颜色与背景颜色完全相同时,才会使用此逻辑。后来,我们扩展了检查以更改元素的颜色,如果它“靠近”背景颜色。这是非常成功的,因为没有元素被意外隐藏。但是,由此产生的颜色有时非常可怕。这只是我不得不以编程方式处理颜色的一些背景。
这是post that describes how to pick a good text color for a given background color。这可能是有限的使用,因为不只是想要一个可见的颜色,你可能会更喜欢使用红色(或者其他颜色),只有当它不易读(或不明显地表示问题)。
Here is an article that describes how to modify a color by manipulating brightness and saturation而不是打打闹闹与RGB值。
您可以使列表中的问题项目具有白色背景,然后在背景中使用红色文本。我没有做过太多的UI编程,所以我不能告诉你在实践中这很容易或难以实现(更改ListBox中单个项目的背景颜色)。
使用自己发布为起点的第一个链接,你可以测试红色,看它是否是“易于阅读”的一些颜色数学。红色与背景颜色有多远?如果它“太接近”,放弃并获得更好的对比色(与没有错误时绘制的颜色不同)。
您可以为几种标准Windows配色方案中的每一种定义一种“警告”颜色(通过切换到这些方案中的每一种,定义满足给定文本颜色和背景颜色的警告颜色)。如果用户碰巧使用了其中一种方案(或者至少背景颜色和文字颜色与您定义的背景/文字颜色组合之一匹配),则只需使用您预先定义的警告颜色之一即可。如果用户不是,则尝试通过将用户的背景颜色和文本颜色与预定义的颜色进行比较来找到可能起作用的颜色,并使用最匹配的颜色。如果没有合适的匹配项(即所有可能的预定义警告颜色在给定某些条件时都不是“易读”的),那么尝试从头开始计算可见的颜色,但与您要替换的文本颜色不同。
您可以定义几种离散的警告颜色,您可以根据特定的颜色范围轻松读取它们。也许你定义了16种颜色。如果背景颜色属于ColorRange1,Color2属于BackgroundColor2等,您可以选择使用Color1。我不知道您需要定义多少颜色才能确保您对所有可能的颜色组合都有“好”选择。通过“手动”定义警告颜色,与在运行时尝试生成警告颜色相比,您可能有更好的机会实现相对“美观”的颜色。
如果您能够为给定的背景颜色(例如未选定)预定义单一警告颜色,则可以使用背景颜色之间的比率为所选聚焦和未聚焦的案例插补相应的警告颜色 - 例如,未选择vs选定焦点 - 并将该比率(或相反)应用于“基本”警告颜色。
我不认为这些建议中的很多(或任何)建议都特别好。当我阅读并思考你的问题时,他们只是我的一些想法。
我认为警告是黄色的,错误是红色的? – Nate 2010-12-03 22:27:08