解决Winform程序在不同分辨率系统下界面混乱

Posted 大西瓜3721

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Winform程序在不同分辨率系统下界面混乱相关的知识,希望对你有一定的参考价值。

问题分析:

         产生界面混乱的主要原因是,winform程序的坐标是基于点(Point)的,而Point又与DPI相关,具体就是

         一英寸 =72Points

一英寸 =  96pixels96DPI是windows的默认DPI,当它被用户更改后,可能就会导致界面与设计之初产生了错乱。

       在网上搜索相关资料后,试着将this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi 但是经实测后,发现仍然没有解决问题:有些界面甚至显示不全;有些控件甚至会被“截断”或完全不显示。

       原因是:默认情况下winfrom的Font单位是Point,最终显示在界面上的尺寸将根据DPI设置自动变化,可以表示为公式: Point / 72 * DPI = Pixel 按照MSDN的解释,上述设置比较适合关心程序的可视区域及控件文字在不同的DPI下总是显示设计时的大小,而不用关心程序界面的绝对大小的情况。

 

解决办法:

        后来想到web程序中的常用单位是像素(pixel),在不同的机器上也能很好地呈现网页布局。那么如果能在winform程序中也使用像素来定位,问题不就解决了吗?

        的确,在winform中实现该计量单位非常简单,仅需要在Form的的构造函数中作如下设置即可:

        

1
2
3
4
5
6
7
8
9
10
11
12
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))); 
 
}

  

以上是关于解决Winform程序在不同分辨率系统下界面混乱的主要内容,如果未能解决你的问题,请参考以下文章

c#winform程序开发,不同屏幕尺寸,分辨率,界面 控件 显示问题

C# winform 在win7 下界面出错

C#界面里的winform AutoScaleMode属性

C#界面里的winform AutoScaleMode属性

winform如何实现根据屏幕分辨率来适应让程序界面总是全屏呢

我的winform窗体是在1024*768的分辨率下做的,现在要到800*600的分辨率下运行,如何调整程序?