1

我的目标是绘制一个不是矩形的组框,而是将角切掉。我的意思不仅仅是剪掉角落,而是有一个连续的封闭路径,其中角落是“缩进”的。我希望它与当前主题的颜色/样式相匹配。

我注意到在 Windows XP 上,组框有 1 像素的灰线,但在 Windows 7 上,通过在白线旁边有一条灰线创建了 3D 效果(内部的白线,除了它在下面的底部灰线)。

您可以使用以下方式获取组框文本标签的颜色:

COLORREF cref;
GetThemeColor(hTheme, BP_GROUPBOX, GBS_NORMAL, TMT_TEXTCOLOR, &cref);

所以,我试图弄清楚如何获取组框中使用的线条的颜色和/或属性,然后(我希望)能够绘制我想要匹配组框样式的线条分别画出我想要的每一块形状。我不确定使用哪些属性来描述线条,或者函数 line DrawRect 是否会使用合适的 Pen 绘制 3D 效果。有没有办法设置笔来绘制这些 3D 效果(2 色平行线)?

谢谢。

4

1 回答 1

1

我总是对 groupbox 感到意外的是,它们实际上是一种按钮样式。(BS_GROUPBOX)。

主题组框(XP 及更高版本关闭经典模式)使用 VSCLASS_BUTTON 中的主题部分 BP_GROUPBOX。您可以使用通常的主题 API 来获取和绘制。如果您的组框需要文本,您可以使用 DrawThemeText。

也有用于绘制非主题组框的 API(例如 DrawEdge),但我不记得细节并且您不太可能需要它们。

像往常一样,我会指出重现控件的行为总是比你想象的要难。

马丁

于 2011-05-08T22:35:11.667 回答