1

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

我的问题是我不知道要使用哪个主题类。我试过了WindowCompositedWindow::Window但是,没有一个真正包含 Windows 10 主题按钮,因为我发现使用这个 msstyle 编辑器

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

现在的样子:

Windows 7 主题按钮

我希望它看起来如何:

Windows 10 主题字幕按钮

我如何绘制按钮:

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));
}
4

1 回答 1

1

问题是Window您正在使用的类。这是在没有合成引擎的情况下合成的旧版 GDI 窗口。

桌面窗口管理器DWM合成每个窗口,因为每个窗口只是一个 DirectX 表面。您需要使用DWMWindow该类而不是Windowfrom 类aero.msstyles

在此处输入图像描述

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

于 2020-06-02T18:16:16.410 回答