Delphi实现动态修改显示器分辨率

南城老纪

南城老纪

2016-02-19 21:28

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享Delphi实现动态修改显示器分辨率,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

  本实例演示如何在程序中动态修改屏幕的分辨率,并且不需要重新启动计算机就可以生效。

  向窗体上添加两个Button控件,设计完成的主界面如图1所示。

图1 主界面

  在程序中添加一个自定义函数DynamicResolution,它有两个参数,分别对应于水平和垂直方向的分辨率,并且该函数有一个BOOL类型的返回值,通过判断返回值可以判断DynamicResolution函数是否正确执行。DynamicResolution函数代码如下:

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

  在程序运行过程中,通过单击窗体上的两个按钮“640*480”、“800*600”来调用DynamicResolution(640,480)或DynamicResolution(800,600)修改分辨率。

  程序首先通过EnumDisplaySettings来取得当前屏幕的分辨率,把它存储在变量lpDevMode中,然后把lpDevMode设置为新的分辨率,最后通过ChangeDisplaySettings函数完成动态修改显示器分辨率的具体操作。

  程序代码如下:

  unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
type
 TfrmMain = class(TForm)
 btn800600: TButton;
 btn640480: TButton;
 procedure btn640480Click(Sender: TObject);
 procedure btn800600Click(Sender: TObject);
private
 { Private declarations }
public
 { Public declarations }
 function DynamicResolution(X, Y: word): BOOL;
 end;
var
 frmMain: TfrmMain;
 implementation
 {$R *.dfm}
 function TfrmMain.DynamicResolution(X, Y: word): BOOL;
var
 lpDevMode: TDeviceMode;
begin
 Result := EnumDisplaySettings(nil, 0, lpDevMode);
 if Result then
 begin
  lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT;
  lpDevMode.dmPelsWidth := X;
  lpDevMode.dmPelsHeight := Y;
  Result:=ChangeDisplaySettings(lpDevMode,0)=DISP_CHANGE_SUCCESSFUL;
 end;
end;
procedure TfrmMain.btn640480Click(Sender: TObject);
begin
 if DynamicResolution(640, 480) then
 begin
  ShowMessage(’现在的分辨率是640*480’);
 end;
end;
procedure TfrmMain.btn800600Click(Sender: TObject);
begin
 if DynamicResolution(800, 600) then
 begin
  ShowMessage(’现在的分辨率是800*600’);
 end;
end;
end.

  保存文件,然后按F9键运行程序,程序运行的初始画面如图2所示。

  在程序运行过程中,用户可以通过单击“800*600”和“640*480”按钮把屏幕分辨率分别更改为“800*600”和“640*480”,如图3所示。

图2 程序运行的初始画面

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

 

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

图3 程序运行结果

展开更多 50%)
分享

猜你喜欢

Delphi实现动态修改显示器分辨率

编程语言 网络编程
Delphi实现动态修改显示器分辨率

用CB动态改变显示器分辨率

编程语言 网络编程
用CB动态改变显示器分辨率

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

19寸显示器最佳分辨率

电脑入门
19寸显示器最佳分辨率

Delphi编程辨别显示分辨率

编程语言 网络编程
Delphi编程辨别显示分辨率

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Windows 7上如何调整显示器分辨率

电脑网络
Windows 7上如何调整显示器分辨率

17寸显示器最佳分辨率是多少

电脑入门
17寸显示器最佳分辨率是多少

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

编写“宏”让Excel自动合并选中单元格内容

编写“宏”让Excel自动合并选中单元格内容

DW MX实例:随机播放背景音乐

DW MX实例:随机播放背景音乐
下拉加载更多内容 ↓