Я использую PictureBox
для отображения изображений. Мои изображения получены непосредственно со сканера, поэтому разрешение достигает 4000*4000... Поскольку моя область отображения намного меньше, мне приходится отображать изображение с pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
, чтобы сохранить соотношение сторон. После этого изображение находится в середине экрана.
Как найти расстояние между левой стороной элемента управления изображением и РЕАЛЬНОЙ левой стороной фактического изображения (см. изображение ниже).
Есть ли решение?
Кстати. отображение изображения в левой части экрана тоже поможет.
var imageHeight = pictureBox1.Image.Height;
var imageWidth = pictureBox1.Image.Width;
var userSelection = rect.Rect;
var display = pictureBox1.DisplayRectangle;
var xFactor = (float)userSelection.Width / display.Width;
var yFactor = (float)userSelection.Height / display.Height;
var realCropSizeWidth = xFactor * imageWidth;
var realCropSizeHight = yFactor * imageHeight;
var realCropX = imageWidth / display.Width;
realCropX *= userSelection.X;
var realCropY = imageHeight / display.Height;
realCropY *= userSelection.Y;
var realCropRectangle = new Rectangle(realCropX, realCropY, (int)realCropSizeWidth,
(int)realCropSizeHight);
var image = CropImage(pictureBox1.Image, realCropRectangle);
pictureBox1.Image = image;
public Image CropImage(Image source, Rectangle rectangle)
{
var target = new Bitmap(rectangle.Width, rectangle.Height);
using (var g = Graphics.FromImage(target))
{
g.DrawImage(source, new Rectangle(0, 0, target.Width, target.Height),
rectangle,
GraphicsUnit.Pixel);
}
return target;
}