您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 利用WPF建立自适应窗口大小布局的WinForm窗口
利用WPF建立自适应窗口大小布局的WinForm窗口编写WinForm程序时,都会碰到一个问题。就是WinForm窗口在不同分辨率下的大小问题。举例说明,你编写的WinForm窗口在1024×768下是合适、匀称的。不过,如果用户的计算机的分辨率为1400×900时,你的WinForm窗口就显得偏小,其中的字体和控件都显得偏小。如果用户的分辨率为640×480,那你的窗口就远远超过它的屏幕的大小。如何解决这个问题?一般的WinForm程序都会这样操作:程序启动——》获取屏幕分辨率——》调整窗体的大小——》调整各个控件大小及位置——》调整各个控件的字体。这样操作比较繁琐,并且要考虑到各种分辨率的情况。这样一来,如果WinForm窗口上有若干控件,调整是一件很痛苦的事。有没有这样的手段。我只要调整WinForm窗口的大小,其中的各个控件大小(包括字体)自动的等比例缩放?还记得一些DirectX的游戏程序吗?当设定为固定的分辨率时(比如800×600),在全屏的时候,他都会自动缩放。WinForm有这样的手段吗?答案是肯定的。在WPF中就能很简单的实现该功能。利用WPF中的ViewBox容器空间。ViewBox是一个容器空间,它会自动缩放容器中的子空间以填满自身,同时它只能有一个子控件。不过,我们可以把Canvas控件作为ViewBox控件的子控件。然后在Canvas控件中布局其他的控件。先看看下面的窗口的Xaml文件Windowx:Class=Window1xmlns=:x==WPFTestmc:Ignorable=dxmlns:d=:mc==ManualWidth=400Height=300DockPanelName=DockPanel1LastChildFill=TrueMenuHeight=23Name=Menu1DockPanel.Dock=TopMenuItemHeader=Menu1MenuItemHeader=H1/MenuItemHeader=H2//MenuItemMenuItemHeader=Menu2MenuItemHeader=L1/MenuItemHeader=L2/Separator/MenuItemHeader=L4//MenuItem/MenuStatusBarHeight=23Name=StatusBar1DockPanel.Dock=BottomStatusBarItemContent=S1Name=S1/StatusBarItemContent=S2Name=S2/StatusBarItemContent=S3Name=S3//StatusBarViewboxName=Viewbox1Stretch=FillCanvasHeight=200Name=Canvas1Width=300Background=#FF8EDE75ButtonCanvas.Left=43Canvas.Top=40Content=ButtonHeight=37Name=Button1Width=87//Canvas/Viewbox/DockPanel/Window先简单的说明这个XAML文件最外面的是Window容器,设置了标题(WPFTest)和大小(400×300),它也只能有一个子控件。Window的子控件是DockPanel容器,是自动停靠容器控件。设置LastChildFill=True,表示最后一个子控件自动填充剩余的空间。没有设置大小,默认大小是Window的客户区大小。DockPanel控件有三个子控件1、Menu控件:菜单控件,自动停靠在容器的顶端2、StatusBar控件:状态栏控件,自动停靠在容器的底部3、ViewBox控件:容器控件,自动填充DockPanel剩余的控件。没有设置大小,为填充的大小。设置填充的模式为Fill,表示子控件填充自身的容器的大小。在ViewBox中放置了一个Canvas控件,设置了大小(注:一定要设置大小,否则默认时会产生各种不可思议的效果),设置了背景色。在Canvas中放置了一个Button控件。只是示例,Canvas中还能放置其他的控件
本文标题:利用WPF建立自适应窗口大小布局的WinForm窗口
链接地址:https://www.777doc.com/doc-2608898 .html