Позвольте пользователю увеличить изображение на C#
Пример
В этом примере добавлена возможность увеличения и уменьшения масштаба на чертеже.
Программа использует PictureBox внутри элемента управления Panel. PictureBox имеет фиксированный размер и не изменяет размер изображения. Панель Panel имеет AutoScroll = True, поэтому она отображает полосы прокрутки, если PictureBox слишком велика, чтобы соответствовать.
Когда вы выбираете шкалу из ComboBox на панели инструментов, программа вызывает следующий метод SetScale, чтобы установить выбранную шкалу.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Установите масштаб и перерисовку. 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 перерисовывает изображение.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// Рисуем картинку. 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); } } |