1

问题:切换缩放时控件的边缘被剪掉。

视窗操作系统:10

我使用的是从 DpiAware Enabled 应用程序中的 Control 继承的 Usercontrol,我需要根据当前缩放来缩放控件

AutoScaleMode.Font

在窗体中设置。当前在 100 缩放如果我拖放用户控件并运行应用程序,控件将以定义的宽度和高度正确呈现。现在将缩放从 100 更改为 200 并运行相同的应用程序,控件需要根据 200 自动缩放缩放但这里我面临的问题是控件的高度和宽度没有正确更新[控制边缘被剪掉]。这个问题可能是由于 AutoScale 因子没有正确更新,此时如果我打开应用程序的设计器

表单的AutoScaleDimensions
值根据当前缩放比例进行更改,现在我再次运行应用程序,控件将正确呈现。

AutoScaleFactor 值未在以下覆盖函数中正确更新

protected override Rectangle GetScaledBounds(Rectangle bounds, SizeF factor, BoundsSpecified specified)
{
    return base.GetScaledBounds(bounds, factor, specified);
}

表单 AutoScaleDimensions 值

这可能是因为我们切换缩放时 Form 的 AutoScaleDimension 值没有更新。(AutoScaleDimension (6F,13F) for 100 scaling) 将保持所有缩放。但是我们在运行应用程序之前打开设计器,AutoScaleDimension 值会根据相应的缩放比例正确更新其值,现在报告的问题将得到解决。

打开设计器之前

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

打开设计器后

this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 24F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

请建议我如何解决报告的问题。

4

0 回答 0