以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口根据屏幕大小自动缩放  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25138)

--  作者:ramen
--  发布时间:2012/11/1 13:13:00
--  窗口根据屏幕大小自动缩放
我想请问一下,我在大显示屏设计出来的窗体,在用小显示屏的电脑上打开,结果窗体的有些部分被遮住了,可不可以让它根据比例自动缩放大小呢?
--  作者:lin_hailun
--  发布时间:2012/11/1 14:20:00
--  
  下面的是通用的缩放代码。放到afterload中

For Each c As Winform.Control In e.Form.Controls
    c.Left = c.Left * (SysInfo.ScreenWidth / e.Form.Width)
    c.Top = c.Top * (SysInfo.ScreenHeight / e.Form.Height)
    c.Width = c.Width * (SysInfo.ScreenWidth / e.Form.Width)
    c.Height = c.Height * (SysInfo.ScreenHeight / e.Form.Height)
Next

--  作者:ramen
--  发布时间:2012/11/2 7:56:00
--  
我试了好几次,还是不太行,我试了用锚定和停靠,但是窗口还是看不全。
--  作者:lihe60
--  发布时间:2012/11/2 7:59:00
--  
以下是引用ramen在2012-11-1 13:13:00的发言:
我想请问一下,我在大显示屏设计出来的窗体,在用小显示屏的电脑上打开,结果窗体的有些部分被遮住了,可不可以让它根据比例自动缩放大小呢?

我也遇到这样的烦恼。


--  作者:狐狸爸爸
--  发布时间:2012/11/2 8:10:00
--  

在标准的分辨率下设计好窗口,调整好位置,善用锚定和停靠。

你office 和 foxtable,在任何分辨率下都可以正常使用


--  作者:lihe60
--  发布时间:2012/11/2 8:35:00
--  
以下是引用狐狸爸爸在2012-11-2 8:10:00的发言:

在标准的分辨率下设计好窗口,调整好位置,善用锚定和停靠。

你office 和 foxtable,在任何分辨率下都可以正常使用

有时候一个控件会盖住另外一个控件的。


--  作者:狐狸爸爸
--  发布时间:2012/11/2 8:48:00
--  
以下是引用lihe60在2012-11-2 8:35:00的发言:

有时候一个控件会盖住另外一个控件的。

 

举例说明?

如果有,也是锚定没有设置好,可以随时修正。


--  作者:lin_hailun
--  发布时间:2012/11/2 9:09:00
--  
 把项目弄上来,窗口就行,我们帮你改。
--  作者:dingqiaoren
--  发布时间:2012/11/2 10:32:00
--  

狐爸,这个问题其实论坛里面早就有人回答了,就一段代码,窗口就可以自适应任何屏幕大小,本来我复制了这段代码的,可是前两天我孩子把我的文本给删除了,于是想找那个帖子,结果在论坛上怎么也找不到,图片点击可在新窗口打开查看

 

那段代码确实无敌,我试过N次都没有问题,不知道论坛里面哪位大神可以提供?


--  作者:lin_hailun
--  发布时间:2012/11/2 11:04:00
--  
以下是引用dingqiaoren在2012-11-2 10:32:00的发言:

狐爸,这个问题其实论坛里面早就有人回答了,就一段代码,窗口就可以自适应任何屏幕大小,本来我复制了这段代码的,可是前两天我孩子把我的文本给删除了,于是想找那个帖子,结果在论坛上怎么也找不到,图片点击可在新窗口打开查看

 

那段代码确实无敌,我试过N次都没有问题,不知道论坛里面哪位大神可以提供?


你是不是想找这个?

msgbox("显示器分辨率为:" & SysInfo.ScreenWidth & " * " & SysInfo.ScreenHeight)
msgbox("可用工作区大小:" & SysInfo.WorkingAreaWidth & " * " & SysInfo.WorkingAreaHeight)

e.Form.BaseForm.Width = SysInfo.ScreenWidth
e.Form.BaseForm.Height = SysInfo.ScreenHeight

---------------------------------------------------------

然后这样?

For Each c As Winform.Control In e.Form.Controls
    c.Left = c.Left * (SysInfo.ScreenWidth / e.Form.Width)
    c.Top = c.Top * (SysInfo.ScreenHeight / e.Form.Height)
    c.Width = c.Width * (SysInfo.ScreenWidth / e.Form.Width)
    c.Height = c.Height * (SysInfo.ScreenHeight / e.Form.Height)
Next

------------------------------------------------------------------------

建议还是用主窗口吧。然后,不要设置锚定……
[此贴子已经被作者于2012-11-2 11:04:10编辑过]