【问题标题】:How do I draw a 3D border using visual styles?如何使用视觉样式绘制 3D 边框?
【发布时间】:2009-02-20 11:47:44
【问题描述】:

我可以使用 ControlPaint.DrawBorder3D 绘制 3D 边框,但我得到的是“Windows 经典”3D 边框。我想绘制当前主题的 3D 边框——在默认的 XP 主题中,这是一个 1px 的蓝色或灰色边框。我如何绘制它,以及如何获得它的宽度?

【问题讨论】:

    标签: c# .net winforms visual-styles


    【解决方案1】:

    听起来你可能需要看看System.Windows.Forms.VisualStyles.VisualStyleRenderer

    System.Windows.Forms.VisualStyles 命名空间暴露VisualStyleElement 代表所有的对象 控件和用户界面 (UI) 视觉支持的元素 样式。绘制或获取信息 关于特定元素,您必须 将VisualStyleRenderer 设置为 您感兴趣的元素。

    要绘制一个元素,请使用 DrawBackground 方法。这 VisualStyleRenderer 类也 包括方法,例如GetColorGetEnumValue,提供信息 关于元素是如何定义的 当前的视觉风格。

    该页面上还有一个代码示例。

    您必须自己绘制边框,但是您可以从VisualStyleElement.Window.Caption.Active 获取颜色,并且大小应该是窗口框架的大小(我相信),即VisualStyleElement.Window.FrameBottom.Active。如果您探索VisualStyleElement.Window,您应该能够确定哪个窗口元素具有绘制边框所需的信息。

    【讨论】:

    • 这是 2008 年的新版本(他没有具体说明他使用的是哪个版本,只是想知道)
    • 嗯,它来自 2.0。容易得多(如果他使用至少 2.0)+1
    • 我需要哪个 VisualStyleElement?它们都不适合我。
    【解决方案2】:

    .NET Framework 2.0 之前的答案

    我假设您正在绘制自己的特殊控件,并且您想使用当前活动主题的元素来绘制它,以便它更适合标准 XP 控件。例如,您试图在标准 Button 控件上启用主题。对吗?

    实际上有点复杂。您的主要关注点应该是 UxTheme.dll。这包含了绘制主题控件所需的一切。 Here 是一个很好的 C# 包装器,可以让你的生活更轻松。还有其他的,所以如果这不是您想要的,我希望我已经为您指明了正确的方向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      • 2013-01-25
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多