C# 窗口自适应窗口宽度和高度

其实winform并不适合做自适应这玩意的,虽然,能做是能做,
就像菜刀一样能切水果,但是,不是那么合适,毕竟有水果刀
wpf做自适应拉伸窗体,会更好一些。
代码:
#region 自适应
private Size m_szInit;//初始窗体大小
private Dictionary<Control, Rectangle> m_dicSize
= new Dictionary<Control, Rectangle>(); protected override void OnLoad(EventArgs e)
{
m_szInit = this.Size;//获取初始大小
this.GetInitSize(this);
base.OnLoad(e);
} private void GetInitSize(Control ctrl)
{
foreach (Control c in ctrl.Controls)
{
m_dicSize.Add(c, new Rectangle(c.locatio{过滤}n, c.Size));
this.GetInitSize(c);
}
} protected override void OnResize(EventArgs e)
{
//计算当前大小和初始大小的比例
float fx = (float)this.Width / m_szInit.Width;
float fy = (float)this.Height / m_szInit.Height;
foreach (var v in m_dicSize)
{
v.Key.Left = (int)(v.Value.Left * fx);
v.Key.Top = (int)(v.Value.Top * fy);
v.Key.Width = (int)(v.Value.Width * fx);
v.Key.Height = (int)(v.Value.Height * fy);
}
base.OnResize(e);
}
#endregion
C# 窗口自适应窗口宽度和高度的更多相关文章
- EasyUI设置Layout自适应浏览器宽度和高度
//设置自适应浏览器宽度和高度 function setLayoutHeight() { var height = $(window).height() - 20; $("#main_lay ...
- Js中获取显示器、浏览器以及窗口等的宽度与高度的方法
网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...
- JQuery获取浏览器窗口的可视区域高度和宽度,滚动条高度
alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height()); //浏览器时下窗口文档的高度 alert($(docum ...
- js各种获取当前窗口页面宽度、高度的方法
alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height()); //浏览器时下窗口文档的高度 alert($(docum ...
- DIV+CSS自适应窗口高度
<html> <head> <title>DIV+CSS自适应窗口高度</title> <style type="text/css&qu ...
- Kubernetes WebSSH终端窗口自适应Resize
追求完美不服输的我,一直在与各种问题斗争的路上痛并快乐着 上一篇文章Django实现WebSSH操作Kubernetes Pod最后留了个问题没有解决,那就是terminal内容窗口的大小没有办法调整 ...
- Python Django撸个WebSSH操作Kubernetes Pod(下)- 终端窗口自适应Resize
追求完美不服输的我,一直在与各种问题斗争的路上痛并快乐着 上一篇文章Django实现WebSSH操作Kubernetes Pod最后留了个问题没有解决,那就是terminal内容窗口的大小没有办法调整 ...
- WPF 窗口自适应
窗口自适应就是说,当主窗口缩放的时候,内部的控件位置自动的调整,而不是隐藏掉.这主要依赖于Grid布局. 1.比如这个groupbox 本身是在一个Grid的Row中的.缩放之后,左边的button不 ...
- css和css3弹性盒模型实现元素宽度(高度)自适应
一.css实现左侧宽度固定右侧宽度自适应 1.定位 <!DOCTYPE html> <html lang="en"> <head> <me ...
随机推荐
- ansible报错:Failed to connect to the host via ssh: Permission denied
原因: 没有在ansible管理节点(即安装ansible的节点)上添加目标节点(即需要管理的节点)的ssh认证信息. 解决办法: 1.在管理节点生成公钥 ssh-keygen 路径为:~/.ssh/ ...
- Eclipse 使用 SVN 插件后修改用户方法汇总
http://blog.csdn.net/ShaneLooLi/article/details/50994005 ******************************************* ...
- LeetCode: Linked List Cycle II 解题报告
Linked List Cycle II Given a linked list, return the node where the cycle begins. If there is no cyc ...
- LVS负载均衡模型及算法概述
集群类型 LB: Load Balancing,负载均衡 HA:High Availability, 高可用 HP:High Performance, 高性能 负载均衡 负载均衡设备 Hardwa ...
- Android仿华为天气绘制刻度盘
效果图 能够看到这个自己定义控件结合了颜色渐变.动态绘制刻度.动态水球效果.接下来我们就来看看这个效果是怎样一步一步实现的. 開始自己定义控件 和非常多自己定义控件方式一样须要去基础某种View或者某 ...
- Spirng MVC启动流程
以Tomcat为例,想在Web容器中使用Spirng MVC,必须进行四项的配置: 修改web.xml,添加servlet定义.编写servletname-servlet.xml( servletna ...
- InstallShield脚本事件
脚本事件主要有三大类:Before Move Data(安装数据前).Move Data(安装数据过程中).After Move Data(安装数据后). OnBegin:在初始化后,被调用 OnFi ...
- mac使用nvm安装node进行多版本管理
安装 $ git clone https://github.com/creationix/nvm.git ~/.nvm $ source ~/.nvm/nvm.sh vi ~/.bash_profil ...
- 调用cmd.exe执行pdf的合并(pdftk.exe)
今天调查一个pdf文件的抽取,合并功能,用到下面这个工具(pdftk): https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ 在cmd.exe里执 ...
- linux安装setup
安装setuptool #yum install setuptool 系统服务管理 #yum install ntsysv 防火墙设置.网络设置 #yum install ipt ...