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