窗口标题按钮的VisualStyleRenderer.GetPartSize返回错误的值

时间:2014-01-10 17:11:54

标签: winforms c#-4.0

由于特定原因,我需要知道Winforms表单的每个标题栏按钮的确切宽度:最大化,最小化和关闭按钮。

代码必须在高于或等于Windows XP SP3的Windows版本上正常工作。

我尝试在Form类中以下列方式执行此操作:

    var graphics = CreateGraphics();
    var renderer = new VisualStyleRenderer(VisualStyleElement.Window.CloseButton.Normal);
    Size closeButtonWidth = renderer.GetPartSize(graphics, ThemeSizeType.True);

我在表单的OnSizeChanged覆盖中调用此代码。 在我的Windows 8操作系统上试用这段代码,我发现返回值非常错误:返回大小为:{Width = 28,Height = 17}。 我在显示器屏幕上可以看到的实际尺寸是下一个:{宽度= 45,高度= 19}(无法发布图像,因为我还没有足够的声誉)。

对于其他表单标题按钮,例如最小化或最大化,VisualStyleRenderer.GetPartSize也会返回错误的值:{宽度= 5,高度= 17}。

那么我做错了什么?

0 个答案:

没有答案