科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Delphi实现动态修改显示器分辨率

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

作者:佚名 来源:网狐 2007年10月31日

关键字: 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 程序运行的初始画面


图3 程序运行结果

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章