绘制Windows 10标题按钮的问题

问题描述 投票:1回答:1

我在使用VisualStyleRenderer类绘制Windows 10主题的窗口标题按钮时遇到了问题。

我的问题是,我不知道该使用哪个主题类。WindowCompositedWindow::Window然而,这些按钮实际上都不包含Windows 10主题的按钮,因为我发现,使用 这个msstyle编辑器.

哪个主题类包含Windows 10主题的标题按钮?

它现在的样子。

Windows 7 themed button

我想让它看起来如何。

Windows 10 themed caption buttons

我是如何绘制按钮的。

protected override void OnPaint(PaintEventArgs e)
{
    VisualStyleRenderer renderer = new VisualStyleRenderer("Window", 18 /*WP_CLOSEBUTTON*/, 1 /*CBS_NORMAL*/);
    var size = renderer.GetPartSize(e.Graphics, ThemeSizeType.True);
    renderer.DrawBackground(e.Graphics, new System.Drawing.Rectangle(10, 10, size.Width, size.Height));
}
c# winforms winapi visual-styles
1个回答
1
投票

问题是 Window 类。这是传统的GDI窗口,它是在没有合成引擎的情况下合成的。

窗口中的 DWM 桌面窗口管理器对每个窗口进行合成,因为每个窗口只是一个DirectX曲面。您需要使用 DWMWindow 阶级,而不是 Window 阶层 aero.msstyles.

enter image description here

请注意每个DPI有多个字形:96、120、144等。

© www.soinside.com 2019 - 2024. All rights reserved.