如何动态改变屏幕的分辨率?(100分)

  • 主题发起人 主题发起人 3.14
  • 开始时间 开始时间
某也想知
 
if screen.width&lt;&gt;800 then<br>&nbsp; &nbsp;begin<br>&nbsp; &nbsp; j:=0;<br>&nbsp; &nbsp; while devmode.dmpelswidth&lt;&gt;800 do<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; EnumDisplaySettings(nil,j,devmode);<br>&nbsp; &nbsp; j:=j+1;<br>&nbsp; &nbsp; end;<br>&nbsp; &nbsp; EnumDisplaySettings(nil,j-1,devmode);<br>// &nbsp; &nbsp; &nbsp; &nbsp;devmode.dmpelswidth:=800; &nbsp; {宽度}<br>// &nbsp; &nbsp; &nbsp; &nbsp;devmode.dmpelsheight:=600;{高度}<br>&nbsp; &nbsp; &nbsp; &nbsp; ChangeDisplaySettings(devmode,0); {更改设置}<br>&nbsp; &nbsp; &nbsp; &nbsp; devmode.dmfields:=dm_pelswidth OR dm_pelsheight ;<br>&nbsp; &nbsp; &nbsp; &nbsp; ChangeDisplaySettings(devmode,0); {更改设置}<br>&nbsp; &nbsp;end;<br>
 
自己编好的程序,到别人的机子上运行不正常,大概主要还是分辨率的问题。可以这样解决:<br>程序在800*600下编译,运行过程中,在建立窗体时,测试一下分辨率。同时建立一个变量,<br>保存一个比例,如果是800*600,比例为1,如果是640*480,比例为0.8。在窗体中用到的<br>控件,可以用点数*比例变量来确定。<br>比如:比例变量为X,建立一个按钮大小为10*20,按钮的实际大小可以动态改变,<br>&nbsp; &nbsp; &nbsp; 大小为(10*X)*(20*X)。这样,如果在800*600下,它的大小是10*20;<br>&nbsp; &nbsp; &nbsp; 如果在640*480下,它的大小是8*16。
 
人太多就没法结束了,3.14,虽然我知道这里好多人都没有看清你的要求,但是不得已了,<br>要不继续这么灌下去^
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部