问题:当缩放比例时,控件的边缘被剪掉。
Windows操作系统:10
我使用的是从DpiAware Enabled应用程序中的Control继承的Usercontrol,我需要根据当前的缩放比例来缩放控件
AutoScaleMode.Font
在Form中设置。如果我拖放Usercontrol并运行应用程序,当前以100缩放比例显示,控件将正确显示具有定义的宽度和高度。现在将Scaling从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)用于100缩放)将针对所有缩放保持不变。但是我们在运行应用程序之前打开了设计器,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;
请建议我如何解决所报告的问题。