我可以使用ControlPaint.DrawBorder3D绘制3D边框,但我得到了'Windows Classic'3D边框。我想绘制当前主题的3D边框 - 在默认的XP主题中,这是1px蓝色或灰色边框。我该如何绘制它,以及如何获得它的宽度?
答案 0 :(得分:4)
听起来您可能需要查看System.Windows.Forms.VisualStyles.VisualStyleRenderer:
System.Windows.Forms.VisualStyles
命名空间公开VisualStyleElement
代表所有的对象 控件和用户界面(UI) 视觉支持的元素 样式。绘制或获取信息 关于特定元素,你必须 设置VisualStyleRenderer
到 你感兴趣的元素。要绘制元素,请使用
DrawBackground
方法。该VisualStyleRenderer
课也 包括方法,例如GetColor
和GetEnumValue
,提供信息 关于如何定义一个元素 目前的视觉风格。
该页面上也有代码示例。
你必须自己绘制边框,但是你可以从VisualStyleElement.Window.Caption.Active
获得颜色,尺寸应该是窗框的大小(我相信),即VisualStyleElement.Window.FrameBottom.Active
。如果您浏览VisualStyleElement.Window
,您应该能够确定哪个窗口元素包含绘制边框所需的信息。
答案 1 :(得分:1)
.NET Framework 2.0之前的答案
我假设您正在绘制自己的特殊控件,并且您希望使用当前活动主题的元素来绘制它,以便它更适合标准XP控件。你不试图在标准的Button控件上启用主题。正确的吗?
实际上有点复杂。你的主要焦点应该是UxTheme.dll。这包含绘制主题控件所需的一切。 Here是围绕这个dll的一个很好的C#包装器,让你的生活更轻松。还有其他人如果这不是你想要的,我希望我已经指出了你正确的方向。