2013-12-14 5 views
0

Я экспериментировал с добавлением элементов в Windows Forms динамически с помощью кода. Мне нужно создать элемент PictureBox. Так, далеко, у меня есть следующий код:PictureBox не виден

private void Form1_Load(object sender, EventArgs e) 
    { 
     //stylise form 
     this.BackColor = System.Drawing.Color.Black; 

     PictureBox bgui = new PictureBox(); 
     bgui.Image = Properties.Resources.attack_box; 
     bgui.Name = "bgui"; 
     bgui.Location = new Point(0, 600); 
     this.Controls.Add(bgui); 
     bgui.Visible = true; 

    } 

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

Я был бы очень признателен, если бы вы могли дать мне представление о моем неправильном исполнении.

Спасибо, Computo.

+0

Возможно, ваше изображение не загружается. что я делаю в этом случае bgui.borderstyle = BorderStyle.Fixed3D, чтобы вы могли видеть, где он находится. –

+0

600 немного выше. Уменьшите его или установите для этого. ClientSize.Height - bgui.Height. –

ответ

0

Вам необходимо установить Width и Height Свойства PictureBox.

Попробуйте:

bgui.Width = 500; 
    bgui.Height = 500; 

Полный код:

private void Form1_Load(object sender, EventArgs e) 
{ 
    //stylise form 
    this.BackColor = System.Drawing.Color.Black; 

    PictureBox bgui = new PictureBox(); 
    bgui.Image = Properties.Resources.attack_box; 
    bgui.Name = "bgui"; 
    bgui.Width = 500; 
    bgui.Height = 500; 
    bgui.Location = new Point(0, 600); 
    this.Controls.Add(bgui); 
    bgui.Visible = true; 

} 
+0

Я установил его в размеры изображения w: 800, h: 200. Еще черный экран. :/ – Computoguy

+0

попробуйте то, что я вам сказал –

+0

@Computoguy: вы можете попробовать, что сказал bto.rdx, а также, пожалуйста, убедитесь, что вы установили свою ось Y для фотошопа 600, чтобы она была далеко внизу, вы можете установить ее на 300 или на какой-то верхний уровень идентифицируйте свою фотографию. –

0

Оказывается, что System.Drawing.Point не переводить на фактических пикселей на экране. Мне нужно будет исследовать, как Point переводит в пиксели.

0

Здесь его работы совершенны. Укажите параметр SizeMode и измените местоположение.

private void Form1_Load(object sender, EventArgs e) 
    { 
     //stylise form 
     this.BackColor = System.Drawing.Color.Black; 

     PictureBox bgui = new PictureBox(); 
     bgui.Image = Properties.Resources.attack_box; 
     bgui.Location = new System.Drawing.Point(100, 0); 
     bgui.Name = "pictureBox1"; 
     bgui.SizeMode = PictureBoxSizeMode.AutoSize; 
     this.Controls.Add(bgui); 
    }