web-dev-qa-db-ja.com

ピクチャボックスの画像をクリア

Pictureboxで描画イメージをクリアするにはどうすればよいですか?以下は私を助けません:

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

助けてください。

[〜#〜] 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)]; 
} 
37
ktarik

他の人が言ったように、Imageプロパティをnullに設定すると動作するはずです。

表示されない場合は、 InitialImage プロパティを使用して画像を表示している可能性があります。もしそうなら、そのプロパティをnullに設定してみてください:

pictBox.InitialImage = null;
35

Image property を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

これはあなたが探していたものですか?

[〜#〜] edit [〜#〜]

Paintメソッドを使用しているため、毎回再描画されます。Pictureboxをペイントするかどうかを示すフラグをフォームレベルで設定することをお勧めします。

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

ペイントで使用するだけ

if(ShouldDraw)
  //do your stuff

ボタンをクリックすると、このプロパティがfalseに設定され、問題ないはずです。

4
V4Vendetta

次のものが必要です。

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

動作させるには、Image = nullの後にRefresh()ステートメントを追加する必要がありました。

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