C# 获取已单击的picturebox的位置

C# 获取已单击的picturebox的位置,c#,windows,click,position,point,C#,Windows,Click,Position,Point,我想知道鼠标点击过的图片盒的位置,但我不知道怎么做?? 我指的是图片盒的位置,而不是图片盒在上面的形式。 谢谢 穆根快死了。从MouseEventArgs获得的点是鼠标的“屏幕”点,其中0,0是整个显示器或桌面的左上角(不管您怎么想)。要将其转换为PictureBox控件中的“客户端”点,其中0,0是该PictureBox的左上角,您需要使用control.PointToClient()方法: 穆根快到了。从MouseEventArgs获得的点是鼠标的“屏幕”点,其中0,0是整个显示器或桌面的左

我想知道鼠标点击过的图片盒的位置,但我不知道怎么做?? 我指的是图片盒的位置,而不是图片盒在上面的形式。
谢谢

穆根快死了。从MouseEventArgs获得的点是鼠标的“屏幕”点,其中0,0是整个显示器或桌面的左上角(不管您怎么想)。要将其转换为PictureBox控件中的“客户端”点,其中0,0是该PictureBox的左上角,您需要使用control.PointToClient()方法:


穆根快到了。从MouseEventArgs获得的点是鼠标的“屏幕”点,其中0,0是整个显示器或桌面的左上角(不管您怎么想)。要将其转换为PictureBox控件中的“客户端”点,其中0,0是该PictureBox的左上角,您需要使用control.PointToClient()方法:



相对于什么的位置?屏幕,窗体,父控件,…@madd0:相对于picturebox的位置。相对于什么的位置?屏幕、窗体、父控件,…@madd0:相对于picturebox的位置。关闭,但MouseEventArgs的X和Y属性是鼠标相对于桌面左上角的位置,而不是picturebox。我想要相对于picturebox的位置,但此代码用于单击我的窗体而不是picturebox。关闭,但是MouseEventArgs的X和Y属性是鼠标相对于桌面左上角的位置,而不是PictureBox。我想要相对PictureBox的位置,但此代码用于单击我的表单而不是PictureBox。我想要如果我更改PictureBox的位置,PictureBox上的specefic点的位置将被修复,我想得到相对于picturebox的这个固定点。我想我明白了,这就是你想要的。如果在PictureBox中有目标的图片,并且单击“靶心”,则无论PictureBox在窗体上的位置或窗体在屏幕上的位置,PointToClient都将返回相同的点坐标。好的,这是真的,但在不同的分辨率下,目标位置将不同,这是真的吗?这取决于发生了什么。100像素乘100像素的图像无论以何种分辨率观看,仍将是100x100;在1280x1024处看起来比800x600处小。如果缩放图像,例如,如果最大化窗口,则图像不再是100x100,并且图像区域将位于不同的坐标。但是,如果跟踪图像的原始大小和当前大小,您仍然可以通过简单的分割计算出拉伸图片上的坐标在原始图片上的位置:
originalX=currentX*(originalX/currentX)
。如果我更改图片框的位置,图片框上的特殊点的位置将变为固定,我想得到相对于picturebox的这个固定点。我想我明白了,这就是你想要的。如果在PictureBox中有目标的图片,并且单击“靶心”,则无论PictureBox在窗体上的位置或窗体在屏幕上的位置,PointToClient都将返回相同的点坐标。好的,这是真的,但在不同的分辨率下,目标位置将不同,这是真的吗?这取决于发生了什么。100像素乘100像素的图像无论以何种分辨率观看,仍将是100x100;在1280x1024处看起来比800x600处小。如果缩放图像,例如,如果最大化窗口,则图像不再是100x100,并且图像区域将位于不同的坐标。但是,如果跟踪图像的原始大小和当前大小,您仍然可以通过简单的除法计算出拉伸图片上的坐标在原始图片上的位置:
originalX=currentX*(originalX/currentX)
private void pb_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
{
    Point mouseDownLocation = new Point(e.X, e.Y);
    //here goes your if condition ...
}
private void pb_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
{
    Point mouseDownLocation = (Control)sender.PointToClient(new Point(e.X, e.Y));
    //here goes your if condition ...
}