C# 生成和保存ZedGraph绘图而不在窗体上显示
是否可以将数据打印到ZedGraph图形并将其保存为文件,而不显示/生成用户可见的图形?我希望处理大量数据集,生成一个图形,并将其保存到一个文件中,以便在应用程序外部查看 如果无法完成此操作,是否可以在隐藏/最小化窗体上显示图形,保存图形,关闭窗口,然后对每个图形重复此操作?这是可能的 您可以像往常一样创建和操作ZedGraph控件,但不要将其添加到C# 生成和保存ZedGraph绘图而不在窗体上显示,c#,graph,zedgraph,C#,Graph,Zedgraph,是否可以将数据打印到ZedGraph图形并将其保存为文件,而不显示/生成用户可见的图形?我希望处理大量数据集,生成一个图形,并将其保存到一个文件中,以便在应用程序外部查看 如果无法完成此操作,是否可以在隐藏/最小化窗体上显示图形,保存图形,关闭窗口,然后对每个图形重复此操作?这是可能的 您可以像往常一样创建和操作ZedGraph控件,但不要将其添加到表单.Controls列表中,例如,在InitializeComponent()方法中,注释掉如下所示的内容 this.Controls.Add(t
表单.Controls
列表中,例如,在InitializeComponent()
方法中,注释掉如下所示的内容
this.Controls.Add(this.zedGraphControl);
有几种方法可以保存图形
- 如果要显示“另存为”对话框,请在图形控件上调用
SaveAs()
- 如果不需要该对话框,可以使用主窗格上的
写出图像,然后保存该图像: zedGraphControl.MasterPane.GetImage().Save(“test.bmp”)GetImage()
var zedGraph = new ZedGraphControl();
// configure ZedGraphControl here
using (var g = zedGraph.CreateGraphics())
{
zedGraph.MasterPane.ReSize(g, new RectangleF(0, 0, widthPx, heightPx));
}
zedGraph.MasterPane.GetImage().Save(Path.Combine(destinationDir, "test.bmp"));
这甚至可以在没有任何桌面的情况下作为服务运行。唯一的缺点是您需要引用
System.Windows.Forms
和System.Drawing
来使用它。我有一个BackgroundWorker,它运行代码以异步生成图形以及其他任务。我已经确定,在后台线程上生成ZedGraphControl将导致线程无法完成(通过TaskComplete事件),即使DoWork方法已执行。有没有其他方法可以做到这一点?我刚刚尝试了这个方法,它对我有效,我注册了worker.RunWorkerCompleted+=新的RunWorkerCompletedEventHandler(backgroundWorker1\u RunWorkerCompleted);抱歉,我实际上有一个事件在backgroundworker完成后的某个时间被触发。事件处理程序生成图形,然后再次启动相同的BackgroundWorker。BGWorker第二次运行时,永远无法完成任务。出于某种原因,我不得不将图形生成放在一个单独的BGWorker中。很奇怪。这一定是ZedGraph的旧版本。此处未定义主窗格。GraphPane是,但它没有GetImage()方法。你能更新这个代码吗?这个答案是2012年的。自2013年以来,我从未接触过ZedGraph。