【发布时间】:2018-11-13 17:04:30
【问题描述】:
我创建了一个自定义按钮控件。基本上是一个按钮矩形,但矩形内有两个区域具有不同的行为。出于这个原因,我只想为特定区域绘制热压状态,而不是孔按钮。
我目前的方法是使用带有空文本的ButtonRenderer.DrawButton(...) 绘制基本按钮,如果需要,绘制热或按下状态,最后绘制文本。到目前为止一切顺利,但我如何获得热/压制状态的(渐变)颜色?
我尝试过SystemColors、KnownColors 和VisualStyleRenderer.GetColor(ColorProperty.XYZ),但它们似乎都不匹配?如何从主机系统读取这些颜色?
编辑:
示例图片如下:
我想要 hot 和 pressed 按钮状态的颜色 - 在这个 win7 屏幕截图的情况下(浅)蓝色。如果放大,可以看到上下半部分都使用了轻微的颜色渐变。
最后一个按钮显示了我想要完成的事情。
当然,我可以从屏幕截图中提取颜色并对其进行硬编码或使用建议的图像,但这仅适用于这个特定系统,不是吗?
【问题讨论】:
-
你有没有想过做一个独立的用户控件?这将是丰富的功能!
-
@Amit 从
UserControl继承而不是Button有什么好处?那将如何解决我的颜色问题? -
您可以拥有多层背景颜色(图像),因为您可以添加多个容器。这样你就可以在点击或其他动作上产生热键的效果。制作自定义控件总是很棘手,但有时它会产生最佳效果
-
渐变色是什么意思?您能否详细说明并添加一些有关所需行为的描述和图片?
-
@RezaAghaei 示例和更多解释添加
标签: c# winforms button custom-button