S sunjet Unregistered / Unconfirmed GUEST, unregistred user! 2003-09-07 #1 在一有多控件窗体下,有一Timage,求算,画布坐标在父窗的坐标,或把鼠标的X.Y转换成该画布的位置
P pihome Unregistered / Unconfirmed GUEST, unregistred user! 2003-09-07 #2 Image1.ClientToParent(...) Image1.ClientToScreen(...) Image1.ParentToClient(...) Image1.ScreenToClient(...)
Image1.ClientToParent(...) Image1.ClientToScreen(...) Image1.ParentToClient(...) Image1.ScreenToClient(...)
S sunjet Unregistered / Unconfirmed GUEST, unregistred user! 2003-09-07 #4 这个我知道,但还是不行[]是这样的,Image1导入的图像实际大小比Image1小一些,所以还要换成图像的画布的坐标才行,而每一次导入不同大小的图,图像实际大小是动态的
P pihome Unregistered / Unconfirmed GUEST, unregistred user! 2003-09-07 #5 如果 Image.Stretch=False Image.Canvas上的坐标就是对应于Image上的坐标 如果 Image.Stretch=True 那么换算一下就可以了,比如 Canvas 上的 (10,10),那么在Image上应该是 (10 * Image.Picture.Bitmap.Width div Image.Width, 10 * Image.Picture.Bitmap.Height div Image.Height);
如果 Image.Stretch=False Image.Canvas上的坐标就是对应于Image上的坐标 如果 Image.Stretch=True 那么换算一下就可以了,比如 Canvas 上的 (10,10),那么在Image上应该是 (10 * Image.Picture.Bitmap.Width div Image.Width, 10 * Image.Picture.Bitmap.Height div Image.Height);
S sunjet Unregistered / Unconfirmed GUEST, unregistred user! 2003-09-07 #6 to ihome 不完全正确,因为图像并没有变大变小,不是缩放了大小,而是IMAGE1调整了大小,改变了画布在IMAGE1的起点位置. 不过这个启发了我, mx:=(Image1.Width -Image1.Bitmap.Width) div 2; my:=(Image1.Height-Image1.Bitmap.Height) div 2; Canvas的坐标为(x-mx,y-my);
to ihome 不完全正确,因为图像并没有变大变小,不是缩放了大小,而是IMAGE1调整了大小,改变了画布在IMAGE1的起点位置. 不过这个启发了我, mx:=(Image1.Width -Image1.Bitmap.Width) div 2; my:=(Image1.Height-Image1.Bitmap.Height) div 2; Canvas的坐标为(x-mx,y-my);