Измените размер PictureBox в соответствии с размером изображения

Как изменить размер Picturebox, чтобы он мог отображать полное изображение, если размер изображения меньше размера монитора! Я написал код, который не может изменить размер (но все же отправляю код)!

Код перед загрузкой изображения по нажатию кнопки

Dim bmp As Bitmap
bmp = New Bitmap(path)
If bmp.Width < picBox.Image.Width Then picBox.Width = bmp.Width : If bmp.Height < picBox.Image.Height Then picBox.Height = bmp.Height
picBox.Invalidate() : picBox.Refresh()
'picBox.SetBounds(x,y,width,height)

Код не изменяет размер окна с картинками, он просто остается нетронутым!

Редактировать

В форме есть только элемент управления picBox и groupbox [dock enabled].

bmp = New Bitmap(dlgOpen.FileName)
picBox.SizeMode = PictureBoxSizeMode.Normal
Dim w As Integer = picBox.ClientSize.Width
Dim h As Integer = picBox.ClientSize.Height
If bmp.Width > w Then
            w = bmp.Width
End If
If bmp.Height > h Then
            h = bmp.Height
End If
If w > Me.Width - grpBox.Width Then
            w = Me.Width - grpBox.Width
End If
If h > grpBox.Height Then
            h = grpBox.Height
End If
picBox.ClientSize = New Size(w, h)
picBox.ImageLocation = dlgOpen.FileName

Этот код также не изменяет размер графического блока.


person Sourav    schedule 30.07.2012    source источник
comment
Что с кодом не работает? Он вообще не меняет размер? У него неправильный размер? Слишком большой? Слишком маленький? После изменения размера он не перерисовывается должным образом?   -  person Steven Doggart    schedule 30.07.2012
comment
@SteveDog Обновили вопрос!   -  person Sourav    schedule 30.07.2012


Ответы (3)


В .NET есть Public Enumeration PictureBoxSizeMode, который позволяет вам изменить способ обработки PictureBox изображений разного размера:

  • Нормальный
  • StretchImage
  • Авто размер
  • CenterImage
  • Увеличить

Вы можете установить его для текущего PictureBox через свойство .SizeMode. AutoSize - это, вероятно, то, что вы ищете. Если оно больше окна или фрейма, вам нужно будет обработать это в событии PictureBox.Resize, чтобы либо изменить размер окна, либо масштабировать изображение.

Итак, это может быть что-то вроде:

Dim bmp As Bitmap
bmp = New Bitmap(path)
picBox.SizeMode = PictureBoxSizeMode.AutoResize
picBox.Image = bmp
person Nick    schedule 30.07.2012
comment
Что делать, если изображение больше размера монитора? - person Sourav; 30.07.2012
comment
Если bmp.Height ‹picBox.Height, то picBox.SizeMode = PictureBoxSizeMode.AutoSize не изменяет размер - person Sourav; 30.07.2012
comment
Попробуйте изменить настройку до загрузки нового изображения. - person Nick; 30.07.2012
comment
Хорошо, ознакомьтесь с моими последними изменениями. Я не видел, где вы устанавливаете изображение PictureBox, поэтому я угадал какой-то код VB.NET для его установки. - person Nick; 30.07.2012

Размер Picture-box можно изменить только перед загрузкой изображения, после этого он будет доступен только для чтения и не имеет никакого эффекта!

person Sourav    schedule 13.08.2012

person    schedule
comment
Нет эффекта, форма имеет только закрепляемый элемент управления [не графическое поле] - person Sourav; 30.07.2012