如何使用视觉样式绘制3D边框?

时间:2009-02-20 11:47:45

标签: c# .net winforms visual-styles

我可以使用ControlPaint.DrawBorder3D绘制3D边框,但我得到了'Windows Classic'3D边框。我想绘制当前主题的3D边框 - 在默认的XP主题中,这是1px蓝色或灰色边框。我该如何绘制它,以及如何获得它的宽度?

2 个答案:

答案 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#包装器,让你的生活更轻松。还有其他人如果这不是你想要的,我希望我已经指出了你正确的方向。