怎么样获取当前系统支持的分辨率列表?

z643036 2011-10-13 05:12:23
怎么样获取当前系统支持的分辨率列表?
...全文
178 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jayqiang 2011-10-14
  • 打赏
  • 举报
回复

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
// TDevMode = TDeviceMode; //TDeviceMode;是个结构类型
var
DevMode: TDevMode;
Done: Boolean;
ModeNum: Integer;
s: String;
begin
ModeNum := 0; //图形模式索引值从0开始
DevMode.dmSize:=System.SizeOf(TDevMode); //先要对dmSize进行初始化(MSDN上的解释)
//EnumDisplaySettings:枚举当前显卡所支持的所有图形模式
Done := Windows.EnumDisplaySettings(nil, ModeNum, DevMode);
//nil:表示了呼叫当前线程上的计算机使用的显示设备(即屏幕)
while Done do
begin
with DevMode do
begin
//DevMode.dmPelsWidth:水平分辨率(单位:点数)
//DevMode.dmPelsHeight垂直分辨率(单位:点数)
//DevMode.dmDisplayFrequency:屏幕的刷新频率
//DevMode.dmBitsPerPel:显示设备的颜色分辨率(单位:位数);4位16色,8位256色,16位增强色,32位真彩色
case dmBitsPerPel of
4: s:='16 色'; //2^4
8: s:='256 色'; //2^8
16: s:='增强色 (16位)'; //2^16
32: s:='真彩色 (32位)';//2^32
end;
ListBox1.Items.Add(Format('%d × %d,%s ,%d 赫兹',[dmPelsWidth,dmPelsHeight,s,dmDisplayFrequency]));
System.Inc(ModeNum);
Done := Windows.EnumDisplaySettings(nil, ModeNum, DevMode);
end;
end;
end;

end.

浩南_哥 2011-10-14
  • 打赏
  • 举报
回复

var
DevMode:PDeviceModeA
bRe:bool;
begin
while(bRe)
begin
bRe:=EnumDisplaySettings(nil,ENUM_CURRENT_SETTINGS,DevMode);
//DevMode.dmPelsWidth:设备表面的以像素为单位的宽度
//DevMode.dmPelsHeight:可见设备表面的以像素为单位的高度
//DevMode.dmBitsPerPel:显示设备的颜色分辨率,以像素的位数为单位
end
end;

16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧