Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Изменение размеров картинки в PictureBox


Автор: HelgaZaharova 22.4.2008, 18:03
Подскажите, пожалуйста, как изменить размеры картинки, загруженной в PictureBox, и сделать полосы прокрутки. smile  

Автор: jonie 22.4.2008, 20:27
есть такая хрень как scrollableControl (обычно оно не вынесено в тулбокс - давите правой Choose items и добавляйте).
Далее в него пихаете pictureBox... и какго угодно размера его делаете (например при загрузке).
появятся полосы прокрутки....
ну, а уменьшить-увеличить сами найдете...

Автор: HelgaZaharova 22.4.2008, 21:23
cпс, я думала вручную писать))
А все-таки есть люди, которые помогут с размерами, мне эо было более принипиально)) smile 

Автор: vponomarov 22.4.2008, 21:26
jonie, прикольно, не знал такого
кстати, такого же эффекта можно добиться при помощи обычной панели smile чет я сразу не подумал о таком методе решения

Автор: jonie 22.4.2008, 23:19
vponomarov ну как бы панель отнаследована от ScrollableControl

Автор: HelgaZaharova 27.4.2008, 18:46

Делаю так:

 private void button7_Click(object sender, EventArgs e)
        {  
int Width, Height, Width1, Height1;
            Bitmap bm = new Bitmap(100, 200);
            Width = 100;
            Height = 200;
            Width1 = Width/20;
            Height1 = Height/20;
            Bitmap bm1 = new Bitmap(Width1, Height1);
            pictureBox1.Image = bm1;
}
Рхамеры картинки  изменяются, кажется... но эта полученная картинка не отображается.... Есть другие варианты?

Автор: vponomarov 27.4.2008, 20:01
HelgaZaharova, извени, а что вообще должно отображаться?
Код

            Width1 = Width/20;
            Height1 = Height/20;
            Bitmap bm1 = new Bitmap(Width1, Height1);
            pictureBox1.Image = bm1;

вот этим кодом ты создаешь пустую (скорее всего полностью черную) картинку размером 50х100 и отображаешь ее в pictureBox1
смысла в этих строчках вообще не вижу, но это такое дело:
Код

            Bitmap bm = new Bitmap(100, 200);
            Width = 100;
            Height = 200;

Автор: HelgaZaharova 28.4.2008, 10:00
vponomarov,  не поверишь, это не последний способ, кот. я пользовалась... А как правильно, скажи, пожалуйста...  smile 

Автор: vponomarov 28.4.2008, 20:22
HelgaZaharova, на сколько я понял задачу тебе нужно сделать че-нить типа такого:
- в дизайнере на форму положить панель, выставить ей Autoscroll=true, на панель положить пикчерБокс, которому установить SizeMode=Zoom (ну или StretchImage)
- установить в pictureBox1.Image нужную картинку (скорее всего загрузить в объект Bitmap с диска, но могут быть варианты smile )
- в коде изменять размеры пикчерБокса. полосы прокрутки будут появляться автоматически и картинка будет растягиваться до указанного размера

Автор: HelgaZaharova 28.4.2008, 21:01
Только изменение размеров картинки должно происходить при нажатии кнопки.

Автор: HelgaZaharova 1.5.2008, 17:23
А ты знаешь, как это сделать?

Автор: vponomarov 3.5.2008, 00:21
Цитата(HelgaZaharova @  1.5.2008,  17:23 Найти цитируемый пост)
А ты знаешь, как это сделать? 

а какие проблемы?
Код

private void button7_Click(object sender, EventArgs e)
{  
            pictureBox1.Size=new Size(100,200);
}

что еще осталось неясным? smile 

Автор: HelgaZaharova 3.5.2008, 23:03
Если честно, я делала вот так:
Код

private void button7_Click(object sender, EventArgs e)
        {
            {
                if (this.pictureBox1.Image == null)
                {
                    MessageBox.Show("Choose Image");
                }
               
else
{
                Image  myBitmap = pictureBox1.Image; 
                this.pictureBox1.Size = new Size(myBitmap.Width, myBitmap.Height);                                
                Size nSize = new Size(pictureBox1.Image.Width /2, pictureBox1.Image.Height /2);
                Image gdi = new Bitmap(nSize.Width, nSize.Height);
                Graphics ZoomInGraphics = Graphics.FromImage(gdi);
                ZoomInGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
                ZoomInGraphics.DrawImage(pictureBox1.Image, new Rectangle(new Point(0, 0), nSize), new Rectangle(new Point(0, 0), pictureBox1.Image.Size), GraphicsUnit.Pixel);
                ZoomInGraphics.Dispose();
                pictureBox1.Image = gdi;
                pictureBox1.Size = gdi.Size;            
            }
          }
        }


Работает как надо... smile А тебе спасибо большое... smile 

Автор: shark1 4.5.2008, 00:45
HelgaZaharova класный пример smile ,а как открыть например фото в новом окне используя этот пример.Спасибо.

Автор: HelgaZaharova 7.5.2008, 17:54
shark1, не совсе мпоняла, что ты имеешь ввиду, данный код меняет размер картинки, которая находится в PictureBox...
Можно попробовать загрузить каринку из файла (OpenFile), можно задать конкретную картинку, тогда проще использовать Bitmap, а не Image. А новое окно.. в смысле дочерняя форма, или в этом же PictureBox?

Автор: shark1 9.5.2008, 18:17
в смысле дочерняя форма.Spasibo

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)