gpt4 book ai didi

c# - DPI 感知应用程序中的 SizeGripStyle

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:35 29 4
gpt4 key购买 nike

我在不同 DPI 中遇到表单属性 SizeGripStyle 的问题。我的表单将属性 AutoScaleMode 设置为 Font 并使用 API 启用缩放(因为 ClickOnce 应用程序)。抓地力不知何故低于形式。在互联网上我没有找到任何提及。如果可能,知道如何修复它吗?

There you have pics of grip's behavior on different DPI

程序在 C# 4.0 和 WF 中。

最佳答案

这是 Windows 本身的错误。窗体 asks the visual style renderer绘制抓地力。它把工作搞得一团糟,不是让它变大而是变小。它实际上不应该做任何事情,你指定它应该用 handle 填充的矩形。一个糟糕的错误,不幸的是,对于视觉样式渲染器来说并不少见。

对此你无能为力,希望他们有一天会修复这个错误。但有一件事,你必须自己拉 Handlebars 。将窗体的 SizeGripStyle 属性设置回 Auto 并覆盖 OnPaint() 以绘制它:

protected override void OnPaint(PaintEventArgs e) {
base.OnPaint(e);
var gripSize = (int)(16 * e.Graphics.DpiX / 96f);
var rc = new Rectangle(this.ClientSize.Width - gripSize,
this.ClientSize.Height - gripSize, gripSize, gripSize);
ControlPaint.DrawSizeGrip(e.Graphics, this.BackColor, rc);
}

不像您从视觉样式渲染中获得的“酒窝”样式那么漂亮,您也可以考虑绘制位图,但您需要它的多个版本来匹配 DPI。

关于c# - DPI 感知应用程序中的 SizeGripStyle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39957841/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com