📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Button2: TButton;
ListBox1: TListBox;
Button1: TButton;
TrackBar1: TTrackBar;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
uses Math;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
DevModeCount: Integer; // 显示模式的数目
DevModeInfo: ^TDevMode; //指向显示模式信息的指针
DevModeArray: TList; // 显示模式信息结构列表
begin
DevModeArray := TList.Create;
DevModeCount := 0;
GetMem(DevModeInfo, SizeOf(TDevMode));
{枚举显示模式}
while EnumDisplaySettings(nil, DevModeCount, DevModeInfo^) do
begin
DevModeArray.Add(DevModeInfo);
Inc(DevModeCount);
ListBox1.Items.Add(IntToStr(DevModeInfo^.dmPelsWidth)+'x'+
IntToStr(DevModeInfo^.dmPelsHeight)+', '+
IntToStr(Trunc(IntPower(2, DevModeInfo^.dmBitsPerPel)))+
'colors,'+IntToStr(DevModeInfo.dmDisplayFrequency)+'hz');
GetMem(DevModeInfo, SizeOf(TDevMode));
end;
FreeMem(DevModeInfo, SizeOf(TDevMode));
ListBox1.ItemIndex := 0;
end;
{var dm:DEVMODE;
begin
//以下几个是DEVMODE在改变屏幕分辨率时必须使用的几个必须设置的几个值;
with dm do
begin
dmBitsPerPel:=16;
dmpelswidth:=640;
dmpelsheight:=480;
dmDisplayFlags:=DM_INTERLACED;//前面的参数是彩色的,还可以是DM_GRAYSCALE(单色的);
dmDisplayFrequency :=0;
end;
ChangeDisplaySettings(dm,0);
//ChangeDisplaySettings这个函数是非常强大的,所有与显示有关的操作都可以用这个函数来设置,
//这里只是在改变屏幕分辨率的小试牛刀而已;
}
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Case TrackBar1.Position Of
0:Label1.Caption:='640×480';
1:Label1.Caption:='800×600';
2:Label1.Caption:='1280×1024';
end;
end;
function DynamicResolution(X, Y: word;freq:word): BOOL;
var
lpDevMode: TDeviceMode;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
lpDevMode.dmPelsWidth := X;
lpDevMode.dmPelsHeight := Y;
lpDevMode.dmDisplayFrequency:=freq;
Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL; //更改成功,不能更改刷新频率
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Case TrackBar1.Position Of
0: DynamicResolution(640, 480,80);
1: DynamicResolution(800, 600,80);
2: DynamicResolution(1280, 1024,80);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -