【问题标题】:How do I create a colour that will match the current visual style?如何创建与当前视觉风格相匹配的颜色?
【发布时间】:2009-05-18 09:42:40
【问题描述】:

对于我们的 winforms 应用程序,我们被要求将 DataGridView 中的无效单元格涂成红色。我们需要找到一种与当前视觉风格相匹配的红色,但如果用户选择了以红色为主的调色板,它仍然是独特的。如何创建与当前视觉风格相匹配的颜色?如何确保避免冲突?

【问题讨论】:

    标签: c# .net winforms color-scheme


    【解决方案1】:

    我不认为原始海报想要制作调色板(颜色),而是试图突出显示无效单元格。选择的高亮颜色是红色,但他担心如果用户选择了红色调色板,红色可能不会突出。

    如何:绘制无效单元格时,使用 SystemColors.Window 作为文本,使用 SystemColors.WindowText 作为背景。 (或 DataGridView 的任何等价物)。这样,您就可以保证无效单元格的颜色与正常单元格的颜色相反。

    【讨论】:

    • 这就是我想要的方式 - 使用 SystemColor 类中的颜色 - 但客户要求使用红色。
    【解决方案2】:

    我认为您以错误的方式看待这个问题。经常选择红色有几个原因。它(在西方文化等中)通常用于描述某些事情是错误的或危险的。但红色也是一种通常很突出的颜色。但是,当试图将用户注意力引导到页面上的某些内容时,有两种万无一失的方法。

    1) 动画 gif 或视频(令人讨厌)或

    2) 冲突的颜色

    通常红色很突出,但在用户可能具有红色主题风格的情况下,最好的选择是使用会发生冲突的颜色。有可能有冲突的颜色一起去(如果有意义的话)。

    以下是我过去使用的一些网站,可帮助我找到对您也有帮助的配色方案:

    KulerColor CombosColor scheme designer

    这可能不是您正在寻找的答案,但我希望它有所帮助

    【讨论】:

      【解决方案3】:

      这个问题有点模棱两可,有点主观;直接对示例进行评论要容易得多。但是,有一个 multitude of on-line tools 可以帮助您为网站创建调色板,这些可能有助于衡量特定的红色阴影如何与其他各种颜色相互作用。

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        您可以尝试使用ControlPaint 类的LightDark 方法吗?我做类似的事情,虽然有点相反。我需要使网格中的一些行突出,但不像选定的行那样突出。所以我创建了一个比默认选择颜色浅一点的颜色,如下所示:

                checkedColor = ControlPaint.Light(grid.DefaultCellStyle.SelectionBackColor, 1.65f);
        

        可以尝试使用它,也许可以添加一些逻辑,并基于一些突出的系统颜色。例如System.Drawing.SystemColors.HighLightSystem.Drawing.SystemColors.HotTrack

        【讨论】:

          【解决方案5】:

          看看 Krypton Toolkit (http://www.componentfactory.com)。他们为带有主题管理器的 WinForms 控件提供免费工具包。这个主题管理器提供了现成的方法来提取当前的颜色值。

          我与他们无关。我将它用于我自己的产品(http://www.code4ward.net 的 Royal TS)并发现它非常有用。

          如果你想构建漂亮的 UI,你应该看看 Krypton 的东西。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-02-02
            • 2017-07-03
            • 2012-11-05
            • 2018-06-02
            • 2011-09-11
            • 2016-06-28
            • 2021-08-09
            • 1970-01-01
            相关资源
            最近更新 更多