我有一个图片框,其中图像可以使用不同的值进行缩放。然后我试着找出光标在图片框上的位置。我在图片框鼠标移动事件上写下面的代码:
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像素由图像的起始位置而不是图像框给出)。
答案 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;