关于窗体中的尺寸坐标问题(200分,应该不太难) (200分)

  • 主题发起人 主题发起人 shuizi2000
  • 开始时间 开始时间
S

shuizi2000

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
例如我的窗体尺寸为Height为400,Width为300,鼠标在窗体中移动时取出所对应的
X,Y,我想同样视觉大小的窗体尺寸都扩大100倍,这时鼠标移动时取出的X,Y也要自然的
变为变化后的值,应该怎么实现呀??
例如:
在窗体中有一纵坐标,可表示的范围为1--10000逻辑单位,我想通过鼠标移动时,
取出相应的X,Y值,并且能准确反应出1--10000之间的准确值,比如:X:9847,Y:3000
希望各位大侠能给出例子,谢谢!!!
 
Mx,My 是相对坐标值
scalex,scaley 是长宽变化比。

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Mx := x * scalex ;
My := y * scaley
end;

procedure TForm1.FormResize(Sender: TObject);
begin
scalex := Width div 300 ;
scaley := Height div 400;
end;
 
这不是简单的数学比例运算吗?
提供2个:ClientToScreen()、 ScreentoClient()
 
取得x,y座標還可用(相對于窗口):
mouse.CursorPos.x
mouse.CursorPos.y
var x,y:integer;
X:=mouse.CursorPos.x*self.width div 300;
Y:=mouse.CursorPos.y*self.height div 400;
 
后退
顶部