WinForm实现窗体自适应缩放

众所周知,WinForm采用基于像素的布局模型。

因此,原生WinForm对于窗体自适应支持不是很好。

但是我们也可以通过代码来实现。

今天跟大家分享一下如何实现WinForm窗体自适应。

当我们想要实现窗体自适应的时候,优先要通过界面布局设置好窗体和控件的一些属性:

1、Anchor:用于固定控件的边缘到窗体的边缘,当窗体大小改变时,控件的位置也会相应改变。

2、Dock:用于将控件停靠到窗体的边缘,控件的大小会随着窗体边缘的改变而改变。

3、布局控件:使用TableLayoutPanel或FlowLayoutPanel等布局控件可以更好地管理控件的布局,它们可以自动调整大小和位置。

4、Padding:Padding属性定义控件内部的一段空间,用于将控件的内容保持在距控件边框一定的距离。

5、Margin:Margin属性定义控件周围的空间,该空间使其他控件与控件的边框保持指定距离。

除了以上方法外,在实际应用中,我们更多会使用通过代码来手动调整窗体和控件的大小和位置,这种方法第一次写的时候会麻烦一些,但是封装好之后,后续应用也比较简单。

一、我们创建一个类FormAutoSize,然后创建三个字段,分别是窗体宽度、高度和窗体对象。

二、在FormAutoSize类的构造方法中,初始化宽度、高度和窗体对象,同时将各个控件的宽度、高度、左边距、上边距以及字体大小,按照指定的格式(这里使用分号拼接)存储到AccessibleDescription属性里,因为AccessibleDescription属性很少使用,所以存储到这个属性里。

三、接下来就是如何重置窗体控件布局,这里将当前的宽度高度与初始宽度高度进行相除,会得到比例系数scaleX/scaleY,然后将这个系数叠加进去,得到新的宽度高度等属性值,然后重新设置控件属性即可。

四、最后一步就是如何进行调用:首先在需要进行缩放的窗体中定义一个FormAutoSize对象,然后在构造方法中实例化该对象,将当前窗体this作为参数传递进去,最后在窗体的SizeChanged事件中调用该对象的ResumeLayout方法。

五、测试效果:

缩放前尺寸:1280*720

缩放后尺寸:1420*827

http://fh6.985link.com/wijmtrzhuo/903597.html

QQ咨询

QQ: