2016-04-13 5 views
-1

У меня есть PictureBox, который находится внутри tableLayoutPanel3, когда я выбираю файл из Listbox изменить размер pictureBox к размеру изображения:PictureBox.Size свойство не зависит от присвоения

private void imageListBox_SelectedIndexChanged(object sender, EventArgs e) { 
     System.Diagnostics.Debug.WriteLine(imageListBox.Items[0]); 
     string imagePath = imageListBox.SelectedItem + ""; 
     Bitmap = new Bitmap(imagePath); 
     pictureBox.Image = Bitmap; 
     pictureBox.Size = Bitmap.Size;//doesn't change pictureBox's size 
     //those two sizes below are different 
     Debug.WriteLine(Bitmap.Width + " " + Bitmap.Height); 
     Debug.WriteLine(pictureBox.Width + " " + pictureBox.Height); 
     Invalidate(); 
    } 

Designer

result

Вопрос: Как изменить размер PictureBox так вписывает изображение внутри?

Мое грязное решение, с которым я столкнулся, разрешает проблему: this.Size = new Size(tableLayoutPanel2.Width + Bitmap.Size.Width, Bitmap.Height);, но, на мой взгляд, это неправильный путь.

EDIT: Я пробовал каждый доступный PictureBox.SizeMode.

+0

Что об использовании имущества SizeMode PictureBox в? например С StretchImage? Или AutoSize? – Pikoh

+0

@Pikoh Я уже пробовал те, они никак не влияют на размер pictureBox. – Yoda

+0

Yoda, конечно, режим AutoSize меняет изображение на размер растрового изображения ... Я только что попробовал. Возможно, это tableLayout, что не меняет его размер. – Pikoh

ответ

0

Попробуйте размер авто:

pictureBox.SizeMode = PictureBoxSizeMode.AutoSize; 
1

Попробуйте это:

Сначала установите SizeMode в Autosize:

pictureBox.SizeMode = PictureBoxSizeMode.AutoSize; 

Тогда то, что вы должны сделать, это редактировать это свойство:

  • В 3 TableLayoutPanel у вас есть, установите AutoSize=true.
  • Определение столбца в вашем TableLayoutPanel1 должно иметь первый столбец с абсолютным значением x пикселей, а второй со 100% процентами.

Вы также отстыковывать TableLayoutPanel, установить форму AutoSize в true и AutoSizeMode к GrowAndShrink.

Таким образом, расположение у вас будет расти, соответственно, с растрового

+0

Спасибо за хороший ответ, к сожалению, пробовал это, не работает. – Yoda

+0

Я удалил 'tableLayout3': это мой проект http://www68.zippyshare.com/v/QrQmUGip/file.html – Yoda

+0

@Yoda Я загрузил ваш проект, и он изменяет размер всего, кроме формы. Это то, о чем вы говорили? это форма, которая не изменяется? ??? – Pikoh

Смежные вопросы