2016-04-14 18 views
1

"paint"のような単純なアプリケーションがありますが、pictureBox.Imageに設定されたビットマップを描画します。私はここでポリゴンを描き、それらを頂点でキャッチして移動することができるので、ビットマップを再描画する必要があります。 再描画メソッドがあります。私は頂点をキャッチし、マウスを移動した場合System.Drawing.dllで 'System.ArgumentException'が発生しました

private void DrawFullList() 
    { 
     if(pictureBox2.Image != null) 
      pictureBox2.Image.Dispose(); 
     graphic = new Bitmap(pictureBox2.Width, pictureBox2.Height); // exception here 
     g = Graphics.FromImage(graphic); 
     pictureBox2.Image = graphic; 
     for (int i = 0; i < PointsList.Count; i++) 
     { 
      bool yellowframe = false; 
      if (i == dblclck) 
       yellowframe = true; 
      Draw(BrushList[i], PointsList[i], yellowframe); 
     } 
    } 

ので、機能DrawFullList()pictureBox_MouseMove(object sender, MouseEventArgs e)機能して活性化されます。 1つの頂点を数秒間動かすと(たとえば、円を作る)例外'System.ArgumentException' occurred in System.Drawing.dllがスローされます。 ここにヒントはありますか? :)

編集:例外に関する 追加情報: parameter is invalid

+0

特定のメッセージがありますか? –

+0

パラメータが無効です – Blabla

+0

無効な値の値は何ですか?あなたは例外を壊していますか?値を調べて、それが好きでないものを見ます。 –

答えて

1

あなたはグラムから処分しなければならない - 空きメモリへg.dispose()。あなたのbmpが実際に空きメモリのために大きすぎるかもしれないので、メモリの欠如はそのような例外を引き起こす可能性があります。

+0

ありがとうございます!わたしにはできる。解決策を見つけるのに多くの時間を費やしました。私がピクチャボックスからイメージを解放すれば、これも無料になると思っていました:)) – Blabla

関連する問題