怎样是程序适应不同分辨率?(100分)

  • 主题发起人 主题发起人 liansz
  • 开始时间 开始时间
L

liansz

Unregistered / Unconfirmed
GUEST, unregistred user!
就是在800*600分辨率下开发的东西怎样使它在1024*768,640*480
下按比例缩放
 
按比例缩放,,好像没有很好的办法,
你可以加一点东西吗? 在程序执行时,强行设为800*600,嘻嘻:-)
 
注意TWinControl.Scaleby.
 
const k=800;
//design in 800x600
procedure TForm1.FormCreate(Sender:TObject);
begin

ScaleBy(Round(Screen.Width*100/k),100);
end;

BTW: Form1.AutoScroll:=False;
&
you'd better use Arial Fonts.

 
补充一点,当调整分辨率后,应处理下面的消息:
procedure WMDisplayChange(var message: TWMDisplayChange);
message WM_DISPLAYCHANGE;
 
看看控件的Anchors属性,仔细设置后就可以满足你的要求了!
 
以上方法都不完善,
介意你去下一个控件AUTOSIZE
相当不错,
我前段时间就是用它,
效果相当好
cqsssco@21cn.com
 
可以做一个dll
 
我给你发了一个autosize过去,请查收
 
beta , 给我也发一个怎么样?
 
To beta&cqsssco:
FormAutoSize好像不管用啊,是我使用方法不对?
我想要实现的是:在800*600下的一个image,在1024*768下form
变大了以后,image也按照这个比例放大,也就是form上所有的
控件都按比例缩放
 
哪里有Autosize 可下载呀
 
不对呀,应该这样做
对于所有的应该与屏幕对应的窗体成分的大小,都应该使它和
screen.height,screen.width产生关系,
比如说
TForm.FormCreate
begin
Width:=Screen.width div 2;
height:=screen.height div 2;
end;
 
??笆篈э跑棵辊秆猂??
и稱?祘Αい糶?捌祘Α, ??钡?把计, 匡拒盢棵辊秆猂?э? 640X480 ┪ 800X600 单单?

眤惠璶把σ EnumDisplaySettings() 籔 ChangeDisplaySettings 硂ㄢ? WinAPI. ??Τ?玥?糶??ㄒ?, 叫眤刚刚?. :)
function 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 TForm1.Button1Click(Sender: TObject);
begin
if DynamicResolution(640, 480) then
ShowMessage('Now is 640*480');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if DynamicResolution(800, 600) then
ShowMessage('Now is 800*600');
end;

--------------------------------------------------------------------------------

--------------------------------------------------------------------------------
 
To :liansz
FormAutoSize只能在都设好拍后才使用(看帮助)
也才有效果至于IMAGE,将其STRETCH属性设为真
应可以
 
多人接受答案了。
 
后退
顶部