如何动态改变显示分辨率???(10分)

  • 主题发起人 主题发起人 suyude
  • 开始时间 开始时间
procedure Tszfbl_win.BitBtn1Click(Sender: TObject);
var
; lpdevmode :tdevicemode;
begin
; enumdisplaysettings(nil,0,lpdevmode);
; lpdevmode.dmFields := dm_pelswidth or dm_pelsheight;
; if (RadioButton3.checked = true) then
; begin
; ; if MessageDlg('您确定要将显示器的分辨率设成1024 * 768 模式吗?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
; ; begin
; ; ; lpdevmode.dmPelsWidth := 1024;
; ; ; lpdevmode.dmpelsheight := 768;
; ; ; if changedisplaysettings(lpdevmode,0) = DISP_CHANGE_SUCCESSFUL then
; ; ; begin
; ; ; ; showmessage('当前分辨率模式是1024 * 768模式');
; ; ; ; close;
; ; ; end
; ; ; else
; ; ; ; showmessage('分辨率更改失败!')
; ; end;
; end;
; if RadioButton2.checked = true then
; begin
; ; if MessageDlg('您确定要将显示器的分辨率设成800 * 600 模式吗?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
; ; begin
; ; ; lpdevmode.dmPelsWidth := 800;
; ; ; lpdevmode.dmpelsheight := 600;
; ; ; if changedisplaysettings(lpdevmode,0) = DISP_CHANGE_SUCCESSFUL then
; ; ; begin
; ; ; ; showmessage('当前分辨率模式是800 * 600模式');
; ; ; ; close;
; ; ; end
; ; ; else
; ; ; ; showmessage('分辨率更改失败!')
; ; end;
; end;
; if RadioButton1.checked = true then
; begin
; ; if MessageDlg('您确定要将显示器的分辨率设成640 * 480 模式吗?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
; ; begin
; ; ; lpdevmode.dmPelsWidth := 640;
; ; ; lpdevmode.dmpelsheight := 480;
; ; ; if changedisplaysettings(lpdevmode,0) = DISP_CHANGE_SUCCESSFUL then
; ; ; begin
; ; ; ; showmessage('当前分辨率模式是640 * 480 模式');
; ; ; ; close;
; ; ; end
; ; ; else
; ; ; ; showmessage('分辨率更改失败!')
; ; end;
; end;
end;
 
谢谢上面那位大哥!
还有,动态设置颜色应该怎么写?
 
设置颜色可以直接修改注册表
用TREGISTRY
 
TO cfx
这样好象不能动态改变颜色哦~
例如有些游戏一开始的时候就能把颜色改了!等退出游戏以后又恢复原来的分辨率和颜色了!
 
你是想做什么啊???
游戏还是一半的应用程序啊?
 
我想做一个程序,可以转换分辨率!

在当前分辨率下,点一下256色的按钮,就动态转换成256色
再点一下还原按钮,就还原成当前分辨绿
 
怎么没人来啊??
 
我也没有做成256转16位的,因为打传奇需要256所以想做一个,可是没想到,做不出来。
 
我也想要转换颜色的资料。那位大哥知道帮帮忙啊?
 
function SetColorDepth_xy(Depth,w,h:integer):boolean;
var
; lpDevMode:TDeviceMode;
begin
; Result:=EnumDisplaySettings(nil, 0, lpDevMode);
; if Result then
; begin
; ; lpDevMode.dmFields := dm_PelsWidth or dm_PelsHeight or dm_BitsPerPel;
; ; lpDevMode.dmBitsPerPel:=depth;
; ; lpDevMode.dmPelsWidth:=w;
; ; lpDevMode.dmPelsHeight:=h;
; ; Result := ChangeDisplaySettings(lpDevMode, 0)=DISP_CHANGE_SUCCESSFUL;
; end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
SetColorDepth_xy(16,800,600);
end;
 
如果要改成256色,把SetColorDepth_xy(16,800,600);中的“16”
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ^^
改成8而不是256!!
 
后退
顶部