Arhn - архитектура программирования

Обрезка изображения в C#

Я использую 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;
    }
03.01.2012

  • расстояние между левой стороной элемента управления изображением и НАСТОЯЩЕЙ левой стороной фактического изображения - не могли бы вы объяснить или опубликовать изображение, объясняющее, чего вы пытаетесь достичь? 03.01.2012
  • Правильный способ сделать это — сохранить размер PictureBox равным отображаемому изображению. Размер PictureBox динамически рассчитывается с использованием ответа, предоставленного @InBetween 01.02.2012

Ответы:


1

Насколько я знаю, нет прямого способа получить то, что вы хотите, но достаточно простой математики:

Вы знаете соотношение сторон вашего исходного изображения, которое сохраняется, и вы знаете соотношение сторон вашего изображения, в котором вы его показываете. Исходя из этого, вы можете определить, какому размеру (высоте или ширине) соответствует изображение. Как только вы узнаете, что вы можете получить коэффициент масштабирования изображения и, следовательно, вы можете вычислить другое измерение показанного изображения.

Поскольку изображение будет центрировано на измерении, которое не соответствует точно размеру изображения, его просто получить расстояние, которое вы ищете.

03.01.2012
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..