如何更改按钮颜色?

时间:2013-02-21 23:40:39

标签: c++ winapi

我正在使用适用于Windows操作系统的Embarcadero VCL c ++ IDE开发GUI应用程序。作为这个项目的一部分,我必须改变按钮的颜色相对于外部状态。 我知道windows32 API不允许更改按钮的颜色。 你能建议我,如何更改按钮颜色?

1 个答案:

答案 0 :(得分:0)

是否要更改按钮的背景颜色或文本颜色?

由于Windows现在已经使用了一些视觉主题,如果你加载了commctrl并包含一个清单文件,那么将使用默认(当前)主题绘制该按钮。

我可以看到的选项包括(a)自定义绘制背景(b)在正常绘制过程中更改文本颜色(c)绘制没有主题的按钮(即绘制“平面”按钮)。

您可以简单地绘制位图按钮,根据按钮的状态更改位图。您也可以使用单个位图,使用HSL或HSV颜色空间对其进行着色,具体取决于状态。

对于平面类型的按钮,我认为您可以更改它的背景颜色,就像更改文本颜色一样 - 通过在标准绘制过程中进行干预并从3D_FACE更改颜色(不管它是什么,我都会忘记你想要的任何东西。

如果查看Windows XP附带的计算器,可以看到更改文本颜色的示例。

CodeProject.com可能有一堆文章可以帮助这项工作。 :)