【发布时间】:2011-05-08 18:26:08
【问题描述】:
我的目标是绘制一个不是矩形的组框,而是将角切掉。我的意思不仅仅是剪掉角落,而是有一个连续的封闭路径,其中角落是“缩进”的。我希望它与当前主题的颜色/样式相匹配。
我注意到在 Windows XP 上,组框有 1 像素的灰线,但在 Windows 7 上,通过在白线旁边有一条灰线(除了底部之外的内部的白线)会产生 3D 效果它位于灰线下方)。
您可以使用以下方法获取组框文本标签的颜色:
COLORREF cref;
GetThemeColor(hTheme, BP_GROUPBOX, GBS_NORMAL, TMT_TEXTCOLOR, &cref);
所以,我试图弄清楚如何获取组框中使用的线条的颜色和/或属性,然后(我希望)能够绘制我想要匹配组的线条通过分别绘制我想要的每一块形状的盒子样式。我不确定使用哪些属性来描述线条,或者函数 line DrawRect 是否会使用合适的 Pen 绘制 3D 效果。有没有办法设置 Pen 来绘制这些 3D 效果(2 色平行线)?
谢谢。
【问题讨论】:
-
组框不关注主题,无论窗口背景颜色如何,它们总是灰色和白色。尝试一下。不适用于主题 api。只需对它们进行硬编码。
-
在 Windows 经典主题上,它们有方角。在 Windows XP + 7 上,它们是四舍五入的。并且当主题颜色改变时,文本标签颜色会明显改变。我不能硬编码,因为那样它们就不会匹配不同主题或 Windows 版本中的其他组框。