如何改变屏幕的分辨率?(50分)

  • 主题发起人 主题发起人 大花鸡
  • 开始时间 开始时间

大花鸡

Unregistered / Unconfirmed
GUEST, unregistred user!
如何改变屏幕的分辨率?我用Screen.DeskTopHeight:=768;Screen.DesktopWeight:=1024;
可是它们是只读属性,怎么办呢?
 
winapi
systemparamsinfo
你的方法当然不行
 
var
DeaultDevMode:TDevMode;
begin
EnumDisplaySettings(Nil,0,DeaultDevMode);
if (DeaultDevMode.dmPelsWidth<>800) or (DeaultDevMode.dmPelsHeight<>600) then
begin
with DeaultDevMode do
begin
dmPelsWidth:=800;
// 宽度
dmPelsHeight:=600;
// 高度
dmDisplayFrequency:=75;
// 扫描频率
dmBitsPerpel:=16;
// 颜色深度
ChangeDisplaySettings(DeaultDevMode,0);
end;
end;

end;
 
function Resolution(X,Y:word):boolean;
var
DevMode:TDeviceMode;
begin
Result:=EnumDisplaySettings(nil,0,DevMode);
if Result then
begin
DevMode.dmFields:=DM_PELSWIDTH Or DM_PELSHEIGHT;
DevMode.dmPelsWidth:=X;
DevMode.dmPelsHeight:=Y;
Result:=ChangeDisplaySettings(DevMode,0)=DISP_CHANGE_SUCCESSFUL;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Resolution(800,600) then
ShowMessage('800×600模式!');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if Resolution(1280,1024) then
ShowMessage('1280X1024模式!');
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if Resolution(1024,768) then
ShowMessage('1024X768模式!');
end;
 
大家的方法好用,可是我把分辨率从800x600改到1024x768后边Windows的任务栏的位置也改
变了,它不在最下面了。而是在现在屏幕的当中了。为什么?如何解决?
 
?????????????
 
???????????????
 
?????????????????
 
是这样的。我改变分辨率后,任务栏好像没反应一样,它还是那么大,它的底部还是在600个
像素的位置,如果动一下它,它就后变成长1024个像素,你们试试呀
 
创建应用程序时,总是依监视器的分辨率进行的,其缺点是:假如在较高分辨率下设计应用程序,它可能大于用户的有效屏幕大小,在用户使用程序时,就不能显示出全部窗体内容,给用户带来不便。一种简单的解决办法是:在程序运行时,让Delphi自动添加滚动条来解决这个问题。
但是,使用Delphi的自动调整比例过程将产生更加专业的结果。在运行时,Delphi获得系统的屏幕分辨率,并将结果保存在应用程序的Screen对象的PixelsPerInch属性中,然后,使用这个属性的值将窗体调整到当前分辨率。
记住,为了有效地使用这项技术,需要设置窗体的Scaled属性为真,并且只用TrueType字体,如果开发程序时,使用了Windows的小字体,应将窗体的AutoScroll属性设置为假(FALSE)。
 
多人接受答案了。
 
后退
顶部