手机
当前位置:查字典教程网 >编程开发 >MongoDB >C#实现窗体中的各个控件同比自动放缩大小
C#实现窗体中的各个控件同比自动放缩大小
摘要:实现方式主要是利用panel控件为主题,对于每个控件的大小位置和字体这几个属性进行记录,然后根据窗体改变的大小同时放缩。简要步骤如下:1、创...

实现方式主要是利用panel控件为主题,对于每个控件的大小位置和字体这几个属性进行记录,然后根据窗体改变的大小同时放缩。

简要步骤如下:

1、创建C#窗体程序项目。

2、Panel放置到窗体。

3、设置属性dock为fill。

4、注意MinnumSize不能设置为0, 改成大于0都行。

复制代码 代码如下:

public partial class FrmDemo : Form

{

double dFrmWidth;

double dFrmHeight;

double dZoomHorizon;

double dZoomVerticality;

Dictionary<string, string> dicControlsAttribute = new Dictionary<string, string>();

protected void GetAllInitiateContrlInfo(Control CrlContainer)

{

if (CrlContainer.Parent == this)

{

dFrmWidth = Convert.ToDouble(CrlContainer.Width);

dFrmHeight = Convert.ToDouble(CrlContainer.Height);

}

foreach (Control item in CrlContainer.Controls)

{

if (item.Name.Trim() != "")

dicControlsAttribute.Add(item.Name, (item.Left + item.Width / 2) + "," + (item.Top + item.Height / 2)

+ "," + item.Width + "," + item.Height + "," + item.Font.Size);

if ((item as UserControl) == null && item.Controls.Count > 0)

GetAllInitiateContrlInfo(item);

}

}

private void ChangeControlsInitiate(Control CrlContainer)

{

dZoomHorizon = (Convert.ToDouble(CrlContainer.Width) / dFrmWidth);

dZoomVerticality = (Convert.ToDouble(CrlContainer.Height) / dFrmHeight);

}

private void ChangeCurrentControlAttr(Control CrlContainer)

{

double[] dPosition = new double[5];

foreach (Control item in CrlContainer.Controls)

{

if (item.Name.Trim() != "")

{

if ((item as UserControl) == null && item.Controls.Count > 0)

ChangeCurrentControlAttr(item);

string[] strs = dicControlsAttribute[item.Name].Split(',');

for (int j = 0; j < 5; j++)

{

dPosition[j] = Convert.ToDouble(strs[j]);

}

double itemWidth = dPosition[2] * dZoomHorizon;

double itemHeight = dPosition[3] * dZoomVerticality;

item.Left = Convert.ToInt32(dPosition[0] * dZoomHorizon - itemWidth / 2);

item.Top = Convert.ToInt32(dPosition[1] * dZoomVerticality - itemHeight / 2);

item.Width = Convert.ToInt32(itemWidth);

item.Height = Convert.ToInt32(itemHeight);

//item.Font = new Font(item.Font.Name, float.Parse

//((dPosition[4] * Math.Min(dZoomHorizon, dZoomVerticality)).ToString()));

//字体也可以实现同比放缩。

}

}

}

protected override void OnSizeChanged(EventArgs e)

{

base.OnSizeChanged(e);

if (dicControlsAttribute.Count > 0)

{

ChangeControlsInitiate(this.Controls[0]);

ChangeCurrentControlAttr(this.Controls[0]);

}

}

public FrmDemo()

{

InitializeComponent();

GetAllInitiateContrlInfo(this.Controls[0]);//构造函数里面调用即可。

}

}

5、效果测试

C#实现窗体中的各个控件同比自动放缩大小1

C#实现窗体中的各个控件同比自动放缩大小2

【C#实现窗体中的各个控件同比自动放缩大小】相关文章:

MongoDB插入数据的3种方法

MongoDB 学习笔记(一)-MongoDB配置

MongoDB中的主从同步配置和mongod相关启动命令讲解

Linux服务器下MariaDB 10自动化安装部署

mongoDB分页的两种方法(图例)

使用命令方式安装MongoDB指南(Windows、Linux)

mongodb中随机获取1条记录的实现方法

mongodb 随机获取一条记录的方法

MongoDB教程之查询操作实例

MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划

精品推荐
分类导航