我在不同的DPI中遇到了表单属性SizeGripStyle的问题。我的表单将属性AutoScaleMode设置为Font并使用API启用扩展(因为ClickOnce应用程序)。握把以某种方式低于表格。在互联网上我没有找到任何提及。如果可能的话,知道如何解决它吗?
There you have pics of grip's behavior on different DPI
该程序在C#4.0和WF中。
答案 0 :(得分:1)
这是Windows本身的一个错误。 Winforms asks the visual style renderer来绘制抓地力。它严重影响了工作,而不是让它变大,使它变小。它实际上不应该这样做,你指定它应该用手柄填充的矩形。哎呀,不幸的是视觉风格渲染器并不完全不常见。
你可以做的很少,希望他们有一天能修复这个bug。但有一件事,你必须自己画出握把。将窗体的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);
}
不像" dimple"你从视觉样式渲染得到的风格,你也可以考虑绘制一个位图,但你需要它的几个版本来匹配DPI。