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

时间:2009-08-30 14:40:23

标签: 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是缩放值,可能是10,50,100或200等。

我的问题:

如果缩放大于100%,则给出正确的值。但是如果缩放小于100则会给出不正确的值。即使缩放小于100%,如何给出正确的值?

更多解释:

用于缩放我写下面的代码。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

int x = e.X * 100 / _scale;
int y = e.Y * 100 / _scale;