C#不同操作系统下,界面大小不一的原因

在不同的操作系统版本或语言版本之间,系统的默认字体是不同的。
在DesignTime,系统会根据AutoScaleMode的设置不同,将一个参考值赋值给Form的AutoScaleDimensions属性。  
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); Note: 当前系统为英文。因此,当前字体高度为13,宽度为6   
在运行时,CurrentAutoScaleDimensions属性会提取当前系统的相关设置。生成另外一个计算值。AutoScaleFactor属性表现了两个值的比值,作为下一步缩放的缩放因子。
比如,在日文系统下运行时,CurrenAutoScaleDimensions为(6f, 12f)。AutoScaleFactor为(1f, 0.9xxxf).  
System.Win.Forms.ContainerControl会在OnLayout(还包括一堆其它的事件中)中对调用自己的 PerformAutoScale方法,其中对自己和它子孙调用Scale方法,并将AutoScaleFactor传入。从而实现调整他们的位置和大小,以适应当前操作系统的设置。
posted @ 2012-03-28 17:36  东风125  阅读(695)  评论(0编辑  收藏  举报