我的目标是绘制一个不是长方形的组框,而是切掉angular。 我不是说只是剪掉angular落,而是有一个连续的封闭的path,angular落是“缩进”的。 我想要这个匹配当前主题的颜色/样式。
我注意到在Windows XP上,组框有1个像素的灰线,但在Windows 7上有一个3D效果,在白线旁边有一条灰线(内部的白线,除了底部,下面是白线灰线)。
你可以使用像这样的东西来获得组框的文本标签的颜色:
COLORREF cref; GetThemeColor(hTheme, BP_GROUPBOX, GBS_NORMAL, TMT_TEXTCOLOR, &cref);
所以,我想弄清楚如何获得组框中使用的线的颜色和/或属性,然后(我希望)能够绘制我想匹配组框的样式的线分别绘制每一个我想要的形状。 我不确定用什么属性来描述线条,或者如果函数线DrawRect将用合适的笔画出3D效果。 有没有办法设置一支笔来绘制这些3D效果(双阴影平行线)?
谢谢。
对于groupbox,我总是感到意外的是,它们真的是一种按钮风格。 (BS_GROUPBOX)。
主题组框(XP和更高版本的经典模式)在VSCLASS_BUTTON中使用主题部分BP_GROUPBOX。 您可以使用通常的主题API来获取和绘制。 如果您的组框需要文本,您可以使用DrawThemeText。
也有绘制非主题组框的API(例如DrawEdge),但我不记得细节,也不太可能需要它们。
像往常一样,我会指出,再现控制行为总是比你想象的要难。
马丁