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)];
}
他の人が言ったように、Image
プロパティをnull
に設定すると動作するはずです。
表示されない場合は、 InitialImage プロパティを使用して画像を表示している可能性があります。もしそうなら、そのプロパティをnull
に設定してみてください:
pictBox.InitialImage = null;
Image
property をnullに設定すると、問題なく機能します。画像ボックスに現在表示されている画像はすべて消去されます。次のようにコードを記述したことを確認してください。
picBox.Image = null;
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
pictureBox1.Image = null;
}
private void ClearBtn_Click(object sender, EventArgs e)
{
Studentpicture.Image = null;
}
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に設定され、問題ないはずです。
次のものが必要です。
pictbox.Image = null;
pictbox.update();
動作させるには、Image = nullの後にRefresh()ステートメントを追加する必要がありました。
頑固なイメージもありましたが、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();