カスタム作成されたプロッター クラスで問題に直面しています。このクラスは、指定された PictureBox の Image を描画するためのものです。
基本的な使用法は次のようなものです。
double[] signal = StaticSignalGenerator.Sinus(10.0, 0.0, 1000, 5);
using (Plot plotter = new Plot(pictureBox1, Color.White))
{
plotter.Draw(signal, Pens.Black);
}
コンストラクターは、pictureBox1 を参照として使用し、画像の背景色を白にします。描画は長さと振幅の複雑な変換であり、参照の pictureBox 画像が自動的に更新されるよりも、グラフィックスを使用して using ブロックで描画します。
pictureBox 画像が更新される前にクラスが破棄されるため、どこかに問題があると思いますか?
this.pictureBoxRef.Image = this.drawBitmap;
ビットマップのクローンを使用する方が良いでしょうか? (それが同じ範囲にとどまる場合、それは私が恐れる助けにはなりません)
ブロックを使用してこのクラスを使用すると、dispose フェーズに到達したときに ArgumentException が発生しました。このクラスは、次の行で IDisposable を実装します。
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
if (this.pictureBoxRef != null)
{
this.pictureBoxRef.MouseMove -= new MouseEventHandler(PictureBoxRef_MouseMove);
}
if (this.drawBitmap != null)
{
this.drawBitmap.Dispose();
}
if (this.initializedBitmap != null)
{
this.initializedBitmap.Dispose();
}
}
}
無効なパラメーター: null。ArgumentException は処理されませんでした。スタックトレースは次のとおりです。
System.Drawing.Image.get_Width() System.Drawing.Image.get_Size() System.Windows.Forms.PictureBox.ImageRectangleFromSizeMode(PictureBoxSizeMode モード) System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe) System.Windows.Forms. Control.PaintWithErrorHandling(PaintEventArgs e, Int16 レイヤー) System.Windows.Forms.Control.WmPaint(Message& m) System.Windows.Forms.Control.WndProc(Message& m) System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) ) System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
この問題を解決する方法はありますか? 前もって感謝します!