Позвольте пользователю увеличить изображение на C#

Пример Предоставление автосохранения в C# объясняет, как сделать программу, которая позволяет пользователь рисует линии в разных цветах и стилях. Эта программа позволяет пользователю отменить и повторить, сохранить и загрузить чертежи и автосохранять, чтобы он мог перезагрузить чертеж, если он сработает.

В этом примере добавлена возможность увеличения и уменьшения масштаба на чертеже.

Программа использует PictureBox внутри элемента управления Panel. PictureBox имеет фиксированный размер и не изменяет размер изображения. Панель Panel имеет AutoScroll = True, поэтому она отображает полосы прокрутки, если PictureBox слишком велика, чтобы соответствовать.

Когда вы выбираете шкалу из ComboBox на панели инструментов, программа вызывает следующий метод SetScale, чтобы установить выбранную шкалу.

// Установите масштаб и перерисовку.
private void SetScale(float picture_scale)
{
    // Установите масштаб.
    PictureScale = picture_scale;

    // Изменение размера PictureBox.
    picCanvas.ClientSize = new Size(
        (int)(WorldWidth * PictureScale),
        (int)(WorldHeight * PictureScale));

    // Перерисовать.
    picCanvas.Refresh();
}

Этот метод сохраняет новый масштаб в переменной PictureScale. Затем он изменяет размер PictureBox для этого масштаба и обновляет его, чтобы он перерисовал изображение. Когда размер PictureBox изменяется, элемент управления Panel автоматически отображает полосы прокрутки, если это необходимо.

Следующий код показывает, как PictureBox перерисовывает изображение.

// Рисуем картинку.
private void picCanvas_Paint(object sender, PaintEventArgs e)
{
    // Готов.
    e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
    e.Graphics.Clear(Color.White);

    // Масштаб.
    e.Graphics.ScaleTransform(PictureScale, PictureScale);

    // Привлечь.
    foreach (Polyline polyline in Polylines)
    {
        polyline.Draw(e.Graphics);
    }
}

Источник: http://csharphelper.com/blog/2015/03/let-the-user-zoom-on-a-picture-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector