Я пытаюсь добавить PictureBox динамически в TableLayoutPanel, но он не заполняет выбранную ячейку. - PullRequest
0 голосов
/ 28 мая 2018

Я использую эту часть кода, чтобы добавить картинку, но она составляет половину ячейки ... и все же она не работает.

PictureBox pB = new PictureBox {
  Size = MaximumSize,
  Dock = DockStyle.Fill,
  BackgroundImageLayout = ImageLayout.Stretch
};

OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK) {
  string path = ofd.FileName;
  pB.Image = new Bitmap(path);
}

tableLayoutPanel1.Controls.Add(pB, x-1, y-1);
Control control = tableLayoutPanel1.GetControlFromPosition(x - 1, y - 1);
control.Dock = DockStyle.Fill;
control.BackgroundImageLayout = ImageLayout.Stretch;

1 Ответ

0 голосов
/ 28 мая 2018

Вы путаете два изображения, которые PictureBox может иметь:

  • Image является основным со всеми видами возможностей
  • BackgroundImage находится ниже него и может использоваться только для этого: фона.

Вы хотите установить макет для Image;он называется SizeMode

PictureBox pB = new PictureBox
{
    Size = MaximumSize,
    Dock = DockStyle.Fill,
    SizeMode = PictureBoxSizeMode.StretchImage
};

Не уверен, где и как вы установите x и y, но вы должны увидеть полное изображение сейчас, хотя более или менее растянутое.

И вам не нужно снова устанавливать SizeMode или Docking в конце ..

...