C# 如何在Picturebox中获得图像上光标的确切位置

C# 如何在Picturebox中获得图像上光标的确切位置,c#,.net,gdi+,image-manipulation,C#,.net,Gdi+,Image Manipulation,我有一个图片框,其中的图像可以用不同的值进行缩放。然后我试着找出光标在图片框上的位置。我在图片框鼠标移动事件上编写了以下代码: int x = (2 * e.X - pictureBox1.Width + pictureBox1.Image.Width) / (2 * _scale / 100); int y = (2 * e.Y - pictureBox1.Height + pictureBox1.Image.Height) / 2 * _scale / 100); 这里_scale是缩放值

我有一个图片框,其中的图像可以用不同的值进行缩放。然后我试着找出光标在图片框上的位置。我在图片框鼠标移动事件上编写了以下代码:

int x = (2 * e.X - pictureBox1.Width + pictureBox1.Image.Width) / (2 * _scale / 100);
int y = (2 * e.Y - pictureBox1.Height + pictureBox1.Image.Height) / 2 * _scale / 100);
这里_scale是缩放值,可以是10、50100或200等

我的问题: 如果缩放大于100%,则给出正确的值。但是如果缩放的值小于100,则给出的值不正确。如果缩放小于100%,如何给出正确的值

还有一些解释: 对于缩放,我编写以下代码

pictureBox1.Image =  new Bitmap(Orignal_image, (int)( Orignal_image .Width * scale / 100), (int)( Orignal_image.Height * scale / 100));

编辑:picturebox的大小模式为centerImage。而且图片框的宽度不必等于图像。其宽度可能小于图像,然后图像显示在picturebox的中心。我只需要图像的位置。(即,0像素由图像的起始位置而不是picturebox给出)。

看起来罪魁祸首是整数除法:
10/100=0

使用浮点除法或重新排列表达式:

int x = (e.X - (pictureBox1.Width - pictureBox1.Image.Width) / 2) * 100 / _scale;

看起来罪魁祸首是整数除法:
10/100=0

使用浮点除法或重新排列表达式:

int x = (e.X - (pictureBox1.Width - pictureBox1.Image.Width) / 2) * 100 / _scale;

不,先生,如果picturebox的宽度等于图像的宽度,则可能是正确的。不,先生,如果图片盒的宽度与图像的宽度相等,它可能是正确的。但在我的情况下,这是没有必要的。是的,先生,这是正确的,但有一个问题,我想要的结果是左侧的起始位置为0,右侧增加1,2,3,…,等等。但是它给出了左侧-(最大宽度)例如-1024,它增加到右侧,直到它在右侧达到0。是的,先生,这是正确的,但是有一个问题,我想要的结果是左侧的起始位置给出0,右侧增加1,2,3,…等等。但它给出了左侧(最大宽度)eg-1024,它增加到右侧,直到右侧达到0。