Я использую PictureBox
для отображения изображений. Мои изображения поступают непосредственно со сканера, поэтому разрешения до 4000 * 4000 ... Поскольку моя область отображения намного меньше, я должен отображать изображение с pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
, чтобы сохранить соотношение сторон.
После этого изображение находится в центре экрана.
Как найти расстояние между левой стороной элемента управления изображением и REAL левой стороной фактического изображения (см. Изображение ниже).
Есть ли решение?
Btw. отображение изображения в левой части экрана также поможет.
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;
}