【发布时间】:2009-05-18 09:42:40
【问题描述】:
对于我们的 winforms 应用程序,我们被要求将 DataGridView 中的无效单元格涂成红色。我们需要找到一种与当前视觉风格相匹配的红色,但如果用户选择了以红色为主的调色板,它仍然是独特的。如何创建与当前视觉风格相匹配的颜色?如何确保避免冲突?
【问题讨论】:
标签: c# .net winforms color-scheme
对于我们的 winforms 应用程序,我们被要求将 DataGridView 中的无效单元格涂成红色。我们需要找到一种与当前视觉风格相匹配的红色,但如果用户选择了以红色为主的调色板,它仍然是独特的。如何创建与当前视觉风格相匹配的颜色?如何确保避免冲突?
【问题讨论】:
标签: c# .net winforms color-scheme
我不认为原始海报想要制作调色板(颜色),而是试图突出显示无效单元格。选择的高亮颜色是红色,但他担心如果用户选择了红色调色板,红色可能不会突出。
如何:绘制无效单元格时,使用 SystemColors.Window 作为文本,使用 SystemColors.WindowText 作为背景。 (或 DataGridView 的任何等价物)。这样,您就可以保证无效单元格的颜色与正常单元格的颜色相反。
【讨论】:
我认为您以错误的方式看待这个问题。经常选择红色有几个原因。它(在西方文化等中)通常用于描述某些事情是错误的或危险的。但红色也是一种通常很突出的颜色。但是,当试图将用户注意力引导到页面上的某些内容时,有两种万无一失的方法。
1) 动画 gif 或视频(令人讨厌)或
2) 冲突的颜色
通常红色很突出,但在用户可能具有红色主题风格的情况下,最好的选择是使用会发生冲突的颜色。有可能有冲突的颜色一起去(如果有意义的话)。
以下是我过去使用的一些网站,可帮助我找到对您也有帮助的配色方案:
Kuler、Color Combos 和 Color scheme designer
这可能不是您正在寻找的答案,但我希望它有所帮助
【讨论】:
这个问题有点模棱两可,有点主观;直接对示例进行评论要容易得多。但是,有一个 multitude of on-line tools 可以帮助您为网站创建调色板,这些可能有助于衡量特定的红色阴影如何与其他各种颜色相互作用。
希望这会有所帮助。
【讨论】:
您可以尝试使用ControlPaint 类的Light 和Dark 方法吗?我做类似的事情,虽然有点相反。我需要使网格中的一些行突出,但不像选定的行那样突出。所以我创建了一个比默认选择颜色浅一点的颜色,如下所示:
checkedColor = ControlPaint.Light(grid.DefaultCellStyle.SelectionBackColor, 1.65f);
可以尝试使用它,也许可以添加一些逻辑,并基于一些突出的系统颜色。例如System.Drawing.SystemColors.HighLight 或System.Drawing.SystemColors.HotTrack。
【讨论】:
看看 Krypton Toolkit (http://www.componentfactory.com)。他们为带有主题管理器的 WinForms 控件提供免费工具包。这个主题管理器提供了现成的方法来提取当前的颜色值。
我与他们无关。我将它用于我自己的产品(http://www.code4ward.net 的 Royal TS)并发现它非常有用。
如果你想构建漂亮的 UI,你应该看看 Krypton 的东西。
【讨论】: