Как изменить размер картинки в picturebox через textbox?

479
26 марта 2018, 22:38

Не могу найти как можно изменять размер изображения picturebox через textbox, необходимо чтоб изменялась только картинка по размеру а не сам элемент. Кто-нибудь знает как это делается?

Answer 1

Менять нужно размер самого изображения. Я это делаю, вызывая конструктор с оригинальным изображением и новыми шириной и высотой: Bitmap(original, width, height).

Важно! Не забывайте освобождать ресурсы. При каждом изменении размера генерируется новая картинка. Предыдущую нужно удалить. Для этого вызываем Dispose.

Если будете менять оригинальное изображение (через OpenFileDialog, например), то обязательно нужно диспозить ранее загруженное изображение: original.Dispose.

using System;
using System.Drawing;
using System.Windows.Forms;
namespace WinFormApp1
{
    public partial class Form1 : Form
    {
        PictureBox pictureBox;
        NumericUpDown numericUpDownWidth;
        NumericUpDown numericUpDownHeight;
        Bitmap original;
        public Form1()
        {
            //InitializeComponent();
            pictureBox = new PictureBox { Parent = this, BorderStyle = BorderStyle.FixedSingle, Size = new Size(150, 150) };
            original = SystemIcons.Hand.ToBitmap();
            pictureBox.Image = (Bitmap)original.Clone();
            numericUpDownWidth = new NumericUpDown { Parent = this, Top = pictureBox.Bottom + 20, Minimum = 1 };
            numericUpDownHeight = new NumericUpDown { Parent = this, Top = pictureBox.Bottom + 50, Minimum = 1 };
            numericUpDownWidth.Value = original.Width;
            numericUpDownHeight.Value = original.Height;
            numericUpDownWidth.ValueChanged += NumericUpDown_ValueChanged;
            numericUpDownHeight.ValueChanged += NumericUpDown_ValueChanged;
        }
        private void NumericUpDown_ValueChanged(object sender, EventArgs e)
        {
            pictureBox.Image?.Dispose();
            int width = (int)numericUpDownWidth.Value;
            var height = (int)numericUpDownHeight.Value;
            pictureBox.Image = new Bitmap(original, width, height);
        }
    }
}

Думаю, разберётесь.

Answer 2

Вы можете изображение тока ставить типа: центр, растянуть по размеру pictureBox, зум. Но чтобы менять картинку, не видел. Есть конечно способ, но там будут появляться полосы прокрутки (scrollableControl), иначе никак.

READ ALSO
Распаковка шрифта из ресурсов проекта VS

Распаковка шрифта из ресурсов проекта VS

Не могу никак разобраться, в чем проблемаПочему не работает?

303
Работа на Гексагональной сеткой

Работа на Гексагональной сеткой

Здравствуйте, я столкнулся с проблемой создание гексагональной сети в WPF и одно интересно решение в вопросе Гексагональная сеткаЯ начинающий...

293
Проблема с обращением к Скрипту Button

Проблема с обращением к Скрипту Button

Здравствуйте , есть лист объектов, содержащий весь список уровней, который присутствует к игреЯ прохожу по этому списку и включаю картинки...

239