我遇到了自定义书面绘图仪类的问题。此类用于在给定的 PictureBox 的图像上绘图。
基本用法是这样的:
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图像会自动更新。
我认为某处存在问题,因为该类是在图片框图像刷新之前被处理的?
this.pictureBoxRef.Image = this.drawBitmap;
使用位图的Clone会更好吗?(如果那将保持在相同的范围内,我担心这无济于事)
如果我将此类与 using 块一起使用,则在到达处置阶段时,我得到了 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。StackTrace 如下:
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)
知道如何解决这个问题吗?提前致谢!