OxyPlot WPF 后台生成图像

3
我有以下问题:
我在Prism视图中有一个情节。我的目标是从我的应用程序生成报告,其中包括生成的OxyPlot图表。我使用以下行将情节保存为图像:
plot.SaveBitmap(fileName, 960, 540, OxyColor.FromRgb(255, 255, 255));

问题出现在我尝试在用户界面中没有预先查看图形的情况下保存位图时。在这种情况下,我只得到空白图形,白色位图,大小正确但没有内容。没有坐标轴,没有标题(位图只是空白的)。当我使用生成XAML函数而不是位图时,结果相同:根本没有内容。
我还注意到,在保存绘图时,绘图的宽度和高度都设置为0。在保存函数之前设置这些值不会改变结果文件。
我已经尝试在保存图像之前执行以下代码:
plot.InvalidatePlot();

甚至可以是:

plot.InvalidatePlot();

Action emptyAction = delegate { };
plot.Dispatcher.Invoke(DispatcherPriority.Render, emptyAction);

plot.InvalidatePlot();

当我浏览用户界面时,我可以看到情节:保存功能恢复正常行为。没有异常,情节在保存之前刚好有我的数据要绘制。
请帮忙...

你的图表代码是纯粹基于XAML编写的还是通过程序生成的? - Jose
这是纯粹基于XAML的,但是正如我所写的,整个数据已经在尝试SaveImage()函数时附加到绘图上了。 - Marcin Ziąbek
1
我使用 oxyplot 时也遇到了同样的问题。我试图将图像导出到文件,但只有在先在屏幕上显示时才能正常工作。为了使它起作用,您需要以编程方式定义所有模型,并将模型绑定到 XAML。这样,您就不必通过视图正确导出。 - Jose
1
非常感谢您的有用回答。我决定重新设计我的应用程序,以便可以使用FlowDocument创建报告文档。在其中,我可以创建额外的Prism区域,以便注入我的图表控件。这比使用预生成的位图要好得多。如果您可以,请将您的评论写成答案,这样我就可以接受它。 - Marcin Ziąbek
1个回答

2

我曾经在使用 oxyplot 时遇到了同样的问题。我试图将图像导出到文件中,但只有在先在屏幕上显示它时才能正常工作。为使其正常工作,您需要通过程序定义所有模型,并将模型绑定到 XAML。这样,您就无需通过视图正确导出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接