it-roy-ru.com

Очистить изображение на картинке

Как я могу очистить рисунок на картинке? Мне не помогает следующее:

pictbox.Image = null;
pictbox.Invalidate();

Пожалуйста помоги.

ПРАВКА

private void pictbox_Paint(object sender, PaintEventArgs e) 
{ 
     Graphics g = e.Graphics; 
     vl.Draw(g, ref tran.realListForInsert); 
} 

public void Draw(Graphics g, ref List<double> arr) 
{ 
    g.DrawRectangle(new Pen(Brushes.Red, 3), nodeArr[Convert.ToInt32(templstName)].pict.Location.X, nodeArr[Convert.ToInt32(templstName)].pict.Location.Y, 25, 25); 
    g.DrawRectangle(new Pen(Brushes.Green, 3), nodeArr[Convert.ToInt32(templstArgName)].pict.Location.X, nodeArr[Convert.ToInt32(templstArgName)].pict.Location.Y, 25, 25); 
    nodeArr[Convert.ToInt32(templstName)].text.Text = arr[Convert.ToInt32(templstArgName)].ToString(); 
    arr[Convert.ToInt32(templstName)] = arr[Convert.ToInt32(templstArgName)]; 
} 
35
ktarik

Как уже говорили другие, установка свойства Image в null должна работать.

Если это не так, это может означать, что вы использовали свойство InitialImage для отображения своего изображения. Если это действительно так, попробуйте установить для этого свойства значение null:

pictBox.InitialImage = null;
33
Frédéric Hamidi

Установка свойства Image в null будет работать нормально. Он очистит любое изображение, отображаемое в данный момент в графическом окне. Убедитесь, что вы написали код в точности так:

picBox.Image = null;
28
Cody Gray
if (pictureBox1.Image != null)
{
    pictureBox1.Image.Dispose();
    pictureBox1.Image = null;
}
9
Grant Li
private void ClearBtn_Click(object sender, EventArgs e)
{
    Studentpicture.Image = null;
}
4
user1608207

Я предполагаю, что вы хотите очистить изображения, нарисованные через PictureBox.

Этого вы бы достигли с помощью объекта Bitmap и объекта Graphics. вы можете делать что-то вроде

Graphics graphic = Graphics.fromimage(pictbox.Image);
graphic.Clear(Color.Red)//Color to fill the background and reset the box

Это то, что вы смотрели?

ПРАВКА

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

private bool _shouldDraw = true;
public bool ShouldDraw
{
    get { return _shouldDraw; }
    set { _shouldDraw = value; }
}

В вашей Paint просто используйте 

if(ShouldDraw)
  //do your stuff

Когда вы нажимаете кнопку, установите для этого свойства значение false, и все будет в порядке.

4
V4Vendetta

Вам нужно следующее:

pictbox.Image = null;
pictbox.update();
2
stacktay

Мне пришлось добавить оператор Refresh () после Image = null, чтобы все заработало.

0
HillbillyBlue

У меня тоже было упрямое изображение, которое не исчезло бы , Установив для Image и InitialImage значение null .. Чтобы удалить изображение из pictureBox навсегда, мне пришлось использовать приведенный ниже код, после вызова Application.DoEvents () несколько раз:

            Application.DoEvents();
            if (_pictureBox.Image != null)
                _pictureBox.Image.Dispose();
            _pictureBox.Image = null;
            Application.DoEvents();
            if (_pictureBox.InitialImage != null)
                _pictureBox.InitialImage.Dispose();
            _pictureBox.InitialImage = null;
            _pictureBox.Update();
            Application.DoEvents();
            _pictureBox.Refresh();
0
dmihailescu