47 votes

Image claire sur la boîte à images

Comment puis-je effacer l'image dessinée sur la boîte à images ? Ce qui suit ne m'aide pas :

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

Aidez-moi, s'il vous plaît.

EDIT

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)]; 
}

41voto

Cody Gray Points 102261

Définir le Image propriété à null fonctionnera très bien. Il effacera l'image actuellement affichée dans la boîte à images. Assurez-vous que vous avez écrit le code exactement comme ceci :

picBox.Image = null;

1 votes

@ktarik : Ça marche très bien. J'ai utilisé ce code des centaines de fois. Mettez à jour votre question avec plus de détails si cela ne fonctionne pas pour vous.

37voto

Frédéric Hamidi Points 123646

Comme d'autres l'ont dit, le réglage de la Image à la propriété null devrait fonctionner.

Si ce n'est pas le cas, cela peut signifier que vous avez utilisé la fonction InitialImage pour afficher votre image. Si c'est le cas, essayez de définir cette propriété comme suit null à la place :

pictBox.InitialImage = null;

0 votes

D'après les commentaires d'une autre réponse, il semble que ce soit probablement la bonne solution. Je n'aurais probablement jamais trouvé cette solution, je n'arrive pas à imaginer comment cette propriété peut être utile, même de loin, dans les applications WinForms.

0 votes

@Cody, le InitialImage contient l'image qui est affichée pendant le chargement de l'image réelle (généralement par le biais de la propriété ImageLocation propriété). Vous pouvez le considérer comme un substitut temporaire. Je suis d'accord avec votre commentaire dans la réponse de @V4Vendetta, il ne semble pas que le questionneur PictureBox contient en fait une image, mais elle fait On dirait qu'il veut supprimer l'espace réservé, ce qui n'est peut-être pas possible.

0 votes

Malheureusement, cela n'a PAS fonctionné pour moi tout le temps. J'ai montré au coup comment j'ai effacé la boîte à images.

13voto

Grant Li Points 29
if (pictureBox1.Image != null)
{
    pictureBox1.Image.Dispose();
    pictureBox1.Image = null;
}

7voto

stacktay Points 51

Vous avez besoin des éléments suivants :

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

5voto

V4Vendetta Points 15354

Je suppose que vous voulez effacer les images dessinées via PictureBox.

Pour ce faire, vous devez utiliser un objet Bitmap et un objet graphique. Vous pourriez faire quelque chose comme suit

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

C'est ce que vous cherchiez ?

EDIT

Puisque vous utilisez la méthode de peinture, la boîte à images serait redessinée à chaque fois. Je vous suggère de définir un drapeau au niveau du formulaire pour indiquer si la boîte à images doit être peinte ou non.

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

Dans votre peinture, utilisez simplement

if(ShouldDraw)
  //do your stuff

Lorsque vous cliquez sur le bouton, mettez cette propriété à false et tout devrait bien se passer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X