Рисовать в пропорции к PictureBox

180
05 февраля 2018, 02:48

РисуюImage на PictureBox, я сделал возможность лепить Image пользователю на PictureBox самому, чтобы он выбирал место (X, Y) где хочет.

Все работает отлично, но мне нужно чтобы Image.Size зависил от розмеров самого PictureBox. Я делаю Image к примеру 100 на 100 и ставлю его на PictureBox размером 500:500, но вот если уменьшить розмер PictureBox, то мне нужно уменьшить Image.Size и наоборот.

Как это делать? Мне нужно чтобы Image, который прив'язан к координатам мыши изменял размер при изменении размера PictureBox

Answer 1

Я делал как-то так:

    public Bitmap ResizeImage(Image image, Size desireSize)
    {
        var destRect = new Rectangle(0, 0, desireSize.Width, desireSize.Height);
        var destImage = new Bitmap(desireSize.Width, desireSize.Height, PixelFormat.Format32bppPArgb);
        destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution);
        using (var graphics = Graphics.FromImage(destImage))
        {
            graphics.CompositingMode = CompositingMode.SourceCopy;
            graphics.CompositingQuality = CompositingQuality.HighQuality;
            graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
            graphics.SmoothingMode = SmoothingMode.HighQuality;
            graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
            using (var wrapMode = new ImageAttributes())
            {
                wrapMode.SetWrapMode(WrapMode.TileFlipXY);
                graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode);
            }
        }
        return destImage;
    }
READ ALSO
Рисование в UWP

Рисование в UWP

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

160
NullPointerException в while(!=null) IEnumerator

NullPointerException в while(!=null) IEnumerator

Решил сделать реализацию LinkedList, используя IEnumerableПроблема как раз-таки в нем

174
Task<T> вернуть null, не прерывая задачу

Task<T> вернуть null, не прерывая задачу

Одна задача, ожидает выполнение другой задачи, как только возвращаем null из ожидаемой задачи, происходит прерывание выполнения другой

177
сброс цикла по алфавиту

сброс цикла по алфавиту

Уже спрашивал этот вопросно все-таки есть одна проблема

196