从 PictureBox 中的鼠标位置获取真实图像坐标

Tot*_*ki3 5 c# winforms

在我的 Windows 窗体中,我有一个 PictureBox,它的图像是从目录加载的。

我需要将图像的真实尺寸显示到PictureBox中,例如图像(宽度= 1024,高度= 768)和图片框(宽度= 800,高度= 600)。

我想将图像加载到具有相同像素值的 PictureBox 中。因此,当我指向 PictureBox 中的任何位置时,我获得的像素值与指向真实图像时获得的像素值相同(例如使用 Photoshop 获取尺寸)。

到目前为止尝试过但没有成功:

private void PictureBox1_MouseDown(object sender, MouseEventArgs e)
{
    MouseEventArgs me = (MouseEventArgs)e;
    Bitmap b = new Bitmap(PictureBox1.Image);
    MessageBox.Show("X=" + (1024/ 800) * me.X + ", Y=" + (768/ 600) *me.Y);
}     
Run Code Online (Sandbox Code Playgroud)

ASh*_*ASh 6

1024 / 800768 / 600都是整数除法产生1

更改操作顺序:

MessageBox.Show("X=" + (1024 * me.X / 800)  + ", Y=" + (768 * me.Y / 600));
Run Code Online (Sandbox Code Playgroud)

这是完整的方法(假设PictureBox1.SizeMode设置为StretchImage)。使用真实的宽度和高度值,而不是“魔法”常量 1024x768 或 800x600

private void PictureBox1_MouseDown(object sender, MouseEventArgs me)
{            
    Image b = PictureBox1.Image;
    int x = b.Width * me.X / PictureBox1.Width;
    int y = b.Height * me.Y / PictureBox1.Height;
    MessageBox.Show(String.Format("X={0}, Y={1}", x, y));
}
Run Code Online (Sandbox Code Playgroud)