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

时间:2017-03-03 08:52:47

标签: 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);
}     

1 个答案:

答案 0 :(得分:4)

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

更改操作顺序:

MessageBox.Show("X=" + (1024 * me.X / 800)  + ", Y=" + (768 * me.Y / 600));

这是完整的方法(假设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));
}