利用WPF建立自适应窗口大小布局的WinForm窗口
更新时间:2024-01-01 16:57:01 阅读量: 教育文库 文档下载
- wpf如何窗口自适应推荐度:
- 相关推荐
利用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文件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
最外面的是Window容器,设置了标题(WPFTest)和大小(400×300),它也只能有一个子控件。
Window的子控件是DockPanel容器,是自动停靠容器控件。设置LastChildFill=\,表示最后一个子控件自动填充剩余的空间。没有设置大小,默认大小是Window的客户区大小。
DockPanel控件有三个子控件
Menu控件:菜单控件,自动停靠在容器的顶端
StatusBar控件:状态栏控件,自动停靠在容器的底部
ViewBox控件:容器控件,自动填充DockPanel剩余的控件。没有设置大小,为填充的大小。设置填充的模式为Fill,表示子控件填充自身的容器的大小
在ViewBox中放置了一个Canvas控件,设置了大小(注:一定要设置大小,
否则默认时会产生各种不可思议的效果),设置了背景色
在Canvas中放置了一个Button控件。只是示例,Canvas中还能放置其他的控件
在Window的代码中输入如下的代码
代码
启动后是如下的效果
可以看出窗口的宽度是400,由于ViewBox没有设置宽度,故显示非数字,按钮的宽度是87
拖动右下角,调整Window的大小。如下图所示
和上图的比较,Window的大小发生了变化。ViewBox中的子控件也自动的拉伸了。这个从Button的外观能很明显的感受到。更神奇的是,无论我怎么调整Window的大小,Button的外观也随着Window的大小而改变,不过,在内部的逻辑中,Button的宽度始终是87,始终没有发生变化。
另,由于Menu和StatusBar不在ViewBox内。故这两个控件没有缩放,还是原始的大小
这给我们带来了极大的便利。无论window被调整到如何,在内部逻辑中,ViewBox中的子控件Canvas的逻辑大小始终是300×200。我们不需要再为调整后的大小设计额外的代码。
实际上,我猜测。ViewBox的显示机制是,先在内存中把按照逻辑大小把子控件显示出来,然后等比例的缩放显示到ViewBox的客户区。
回到开始的话题。编写的WinForm窗口如何应对不同的分辨率?
在WPF中,将所有的客户控件放在Canvas中再放在ViewBox控件中,利用ViewBox的特性来实现自动的缩放。流程就变成了:程序启动——》获取屏幕分辨率——》调整窗体的大小。其余控件的缩放就交给ViewBox控件吧。而且由于逻辑的大小没有发生变化,你还不必要再额外添加代码。
网上ViewBox控件介绍的比较少,用ViewBox来实现自适应窗体的大小确是独辟蹊径。
正在阅读:
利用WPF建立自适应窗口大小布局的WinForm窗口01-01
苏教版六年级下册语文教学工作计划05-12
登峰燃煤锅炉房输煤廊维修工程施工组织设计04-01
困境与出路:我国社区居家养老模式探析12-30
中国地质大学长城学院2018年度校级科研项目答辩顺序09-15
军事主题公园项目可行性研究报告05-21
文字博物馆解说词完整版本11-07
2014—2015学年第二学期《电视播音与主持艺术》教学进度表07-12
旋挖钻孔灌注桩(支护桩)监理实施细则12-09
紫云府项目介绍08-29
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 窗口
- 布局
- 适应
- 大小
- 利用
- WinForm
- 建立
- WPF
- 2014-2019年中国汽油机行业市场调研及战略规划投资预测报告
- 非谓语动词作宾补,定语,状语的区别以及练习题(含答案)
- 《区域经济方法与模型》课程教学大纲 - 图文
- 高考新课标高考物理选择题专项训练20套 - 图文
- 财务会计专业学生优秀事迹简介
- 浅谈建筑工程施工技术及其现场施工管理措施
- C语言程序设计及实验指导练习及习题参考答案(8--10)
- 土建施工员实务练习题答案5.11
- 2019-2020年高考数学二轮复习第1部分重点强化专题专题4立体几何专题限时集训10立体几何中的向量方法理(I)
- K12九年级英语全册 Unit 7 Lesson 42 Peace at Last教案(新版)冀教版
- 岗位职责
- 建筑物理实验报告
- 肾病综合征治疗方案
- 实习生管理制度
- 我的集体备课
- 雨水人工顶管施工 - 图文
- 中国医科大学2015年7月考试《医学科研方法学》考查课试题答案
- 2018注册会计师考试每日一练(10)
- 浅析夫妻财产制度
- 试题库