屏幕坐标转换问题(50分)

L

lwgygz

Unregistered / Unconfirmed
GUEST, unregistred user!
请问用GetCursorPos(P)得到当前鼠标的坐标P.x,P.y但是如何将这一坐标转换到某一控件
上。如在Image上?


 
P := Image.ScreenToClient(P);
 
ScreenToClient//屏幕到控件
ClientToScreen//控件到屏幕
 
不是很解你的意思,是不是
你想知道鼠标在控件上的坐标啊。
x:=p.x-image.left;
y:=p.y-image.top;
 
我的意思是在Image上的双击事件中没有鼠标的当前坐标,只能用GetCursorPos获取当前鼠标
的坐标,但是如何将该坐标转换为Image上的相对坐标,并在Image上画图形?
 
如果在窗体上有frame的话,请加上当前frame的frame.left,frame.top
才能得到正确的屏幕坐标
 
IMAGE的mouseMOVE里有,用两个变量在里面记录鼠标的坐标,
然后在 在IMAGE的双激里取这两个变量的值。
取出来直接就是IMAGE的相对坐标不用转换
此坐标是以IMAGE的左上角为原点。
 
procedure TForm1.Image1DblClick(Sender: TObject);
var
p:tpoint;
begin
GetCursorPos(p);
p:=image1.ScreenToClient(p);
showmessage(format('x=%d y=%d',[p.x,p.y]));
end;
 
多谢各位的帮助
 
顶部