【问题标题】:Best way to create button displaying selected color创建显示所选颜色的按钮的最佳方法
【发布时间】:2010-12-19 06:25:55
【问题描述】:

你知道那些带有一个小矩形的颜色选择器按钮,显示当前选择的颜色吗?就像在 MS Office 产品中一样。

我想使用 C#/.NET 实现一个。所以我有一个漂亮的小图标,带有洋红色矩形(用于显示颜色)和透明背景。

我可以想到两种方法可以做到这一点,但它们都不是很优雅:

  • 使用图形软件编辑图标,使其具有纯色背景色而不是透明度,并将其大小调整为与包含它的按钮一样大。这将允许将 TransparentColor=Manenta 与按钮背景结合使用,但是当按钮大小、工具栏背景颜色或其他内容发生变化时,必须编辑图标。
  • Edit the icon programmatically whenever a new color is selected.可以,但对我来说似乎有点复杂(关于开发和性能)。

所以。也许我错过了实现这样一个按钮的明显、简单的方法? 提前感谢任何提示/建议/灵感:)

【问题讨论】:

    标签: c# .net button background-color color-picker


    【解决方案1】:

    您可以轻松地覆盖OnPaint 方法并使用您想要的任何颜色绘制一个矩形。

    【讨论】:

    • 你说得对,这不会太复杂。但这也意味着在图标更改时更改代码:(有了 Image#TransparentColor 属性和所有那些洋红色的图标,我希望有一种优雅的方法来解决这个问题(我只是对它视而不见看,也许):-/
    【解决方案2】:

    显然,没有优雅的解决方案。我选择了第一个,使用 PNG 透明度和 BackColor,缺点是必须像包含面板的背景一样为 png 背景着色。这种方式似乎最不痛苦。

    【讨论】:

      【解决方案3】:

      我认为没有理由为此使用图标、PNG 或任何其他图像资源。这似乎完全是在浪费资源。

      只需从代码中绘制框,绘制当前属于控件颜色列表的颜色。理想情况下,您的控件将允许调用者添加自己的颜色。而且它不需要摆弄图像。

      我刚刚使用了owner-draw combo box when I did this,但我画了一个颜色框,正如我所描述的那样。很简单。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-09-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多