我对不同 DPI 中的表单属性 SizeGripStyle 有疑问。我的表单将属性 AutoScaleMode 设置为 Font 并使用 API 启用缩放(因为 ClickOnce 应用程序)。手柄不知何故低于表格。在互联网上我没有找到任何提及。如果可能的话,知道如何解决它吗?
该程序在 C# 4.0 和 WF 中。
我对不同 DPI 中的表单属性 SizeGripStyle 有疑问。我的表单将属性 AutoScaleMode 设置为 Font 并使用 API 启用缩放(因为 ClickOnce 应用程序)。手柄不知何故低于表格。在互联网上我没有找到任何提及。如果可能的话,知道如何解决它吗?
该程序在 C# 4.0 和 WF 中。
这是 Windows 本身的一个错误。Winforms要求视觉样式渲染器绘制夹点。它严重破坏了工作,而不是让它变得更大,而是让它变得更小。它实际上不应该做任何事情,你指定它应该用夹子填充的矩形。真是个错误,不幸的是,对于视觉样式渲染器来说并不少见。
您对此无能为力,希望他们有一天会修复该错误。但有一件事,你必须自己抓紧。将表单的 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。