将windows设置改回缺省设置

时间:2021-12-23 08:32:20

同一个措施在两台机器上运行,一台正常另一台界面产生错杂,通过咨询同事发明本来是产生错杂的那台机器变动Window缺省DPI。

将windows设置改回缺省设置

在网上搜索了一下资料,本来孕育产生界面混乱的主要原因是,,winform措施的坐标是基于点(Point)的,而Point又与DPI相关,具体就是

一英寸 =72Points

一英寸 = 96pixels 96DPI是windows的默认DPI,当它被用户变动后,可能就会导致界面与设计之初孕育产生了错杂。

知道了本来就好办了,步伐一,将windows设置改回缺省设置,步伐二,改措施,继续问度娘...

网上有人说将this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi 但是经实测后,部分界面问题解决,但有些界面甚至显示不全,有些控件甚至会被“截断”或完全不显示。

原因是:默认情况下winfrom的Font单位是Point,最终显示在界面上的尺寸将按照DPI设置自动变革,可以暗示为公式: Point / 72 * DPI = Pixel 凭据MSDN的解释,上述设置对照适合关心措施的可视区域及控件文字在差此外DPI下总是显示设计时的巨细,而不用关心措施界面的绝对巨细的情况。

解决步伐:

后来想到web措施中的常用单位是像素(pixel),在差此外机器上也能很好地泛起网页构造。在winform措施中使用像素来定位即可解决。
在winform中实现该计量单位,仅需要在Form的的结构函数中作如下设置即可:

[csharp] view plain copy
private void InitializeComponent()
{
//设定按字体来缩放控件
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
//设定字体巨细为12px
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel, ((byte)(134)));
}
这样设置之后,在差此外DPI下,界面将整体缩放而不会凌乱,操作的就是DPI自己的特性。

注:在实际应用中,我发明部分第三方控件不撑持AutoScaleMode = Font这种模式,就只能设置成AutoScaleMode = Dpi了。

变动Window缺省DPI,措施界面产生错杂的解决步伐