Starling开发的游戏怎么自适应css分辨率自适应

窗体大小自适应分辨率的实现方法
很多程序员,尤其是开发C/S架构的winform应用程序的同行,都面临着一个比较头疼的事情,窗体大小不能自适应分辨率,从而让他们如坐针毡,时刻祈祷客户不要用过小的分辨率或过大而造成界面显示问题,现在终结者到来了,下面为您提供一个窗体大小自适应分辨的已测试的方法。
使窗体大小自适应分辨率的主要思想:设置MDI窗体,MDI窗体大小会自适应分辨率,其他窗体设置为子窗体,在MDI窗体中,设置一个隐藏的pannel,让pannel四个方向自适应主窗体的大小,然后,当打开子窗体时,把子窗体的大小和位置设置与pannel相同,借助pannel大小自适应主窗体大小,来间接的达到窗体大小自适应分辨率的目的。当分辨率改变时,主窗体会自适应分辨率而改变,pannel也会变化,从而引起打开的子窗体大小自适应分辨率;对于已打开的子窗体,用重新设置大小和位置的方式,达到自适应分辨率的效果。
1. 主窗体的设置(MDI)
(1)AutoScaleMode的属性设置无所谓,此项只是进行了初步测试,大家可以试试!
属性的值为:
1.NONE:不做处理
2.FONT:按字体
3.DPI: 按分辨率
4.Inherit:按父类
(2)调出子窗体的代码:
此处举例说明,一个excel导入sql数据库的窗体大小自适应分辨率的例子:
InFromExcel
void tmiInFromExcel_Click(object
sender, EventArgs e)
(infromexcel == null
|| infromexcel.IsDisposed)
infromexcel
= new InFromExcel();
infromexcel.MdiParent
infromexcel.Show();
infromexcel.Focus();
SetFormPosition(infromexcel);
(Exception ex)
MessageBox.Show(ex.Message);
(3)分辨率改变时,主窗体改变的代码:
//遍历所有打开的子窗体,重新设置子窗的大小和位置,以达到窗体大小自适应分辨率的效果。
void MDI_Resize(object
sender, EventArgs e)
this.MdiChildren.L
(int i = 0;
(this.MdiChildren[i] !=
!this.MdiChildren[i].IsDisposed)
this.SetFormPosition(this.MdiChildren[i]);
2.在主窗体中添加一个pannel,让所有的子窗体与pannel的位置、大小相同,间接实现窗体大小自适应分辨率的效果。
(1)先放置好pannel的位置
(2)设置pannel的anchor属性,设置为Top,
Bottom, Left, Right
(3)设置pannel的visible为false
(3)在设置子窗体位置的方法中,设置pannel的with和height与主窗体的关系,此项需要反复试验,避免当分辨率发生变化时,子窗体出现滚动条。
3.子窗体的设置
设置子窗体的大小和位置与pannel的大小、位置相同,应考虑到当分辨率降低时,窗体上的控件能正常显示,一般把控件都靠左摆放为宜。
void SetFormPosition(Form
//此两行为设置pannel与主窗体的距离
panel1.Width
= this.Width -
panel1.Height
= this.Height -
arg.StartPosition
= FormStartPosition.M
arg.Height
= this.panel1.H
= this.panel1.W
= this.panel1.T
= this.panel1.L
arg.WindowState
= FormWindowState.N
以上只是举了一个窗体大小自适应分辨率的简单例子,在具体工作中,还要视你自己的情况来调整位置和大小,以便得到理想的效果。窗体大小自适应分辨率的实现方式很多,大家也可去网上查找更多的方法,已做比较,从而能找出一个简单、实用的窗体大小自适应分辨的方式来。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

参考资料

 

随机推荐