【问题标题】:OxyPlot WPF generate image in backgroundOxyPlot WPF 在后台生成图像
【发布时间】:2023-03-17 02:56:01
【问题描述】:

我有以下问题:

我的 Prism 视图中有一个情节。我的目标是从我的应用程序生成报告,其中包括生成的 OxyPlot 图表。我使用以下行将绘图保存到图像:

plot.SaveBitmap(fileName, 960, 540, OxyColor.FromRgb(255, 255, 255));

当我尝试保存位图而之前未在用户界面中看到该图时,会出现此问题。在这种情况下,我只得到空白图,尺寸正确但没有内容的白色位图。没有轴,没有标题(位图只是空白)。当我使用函数生成 XAML 而不是 Bitmap 时,结果是一样的:根本没有内容。

我还注意到,在保存绘图时,绘图的宽度和高度都设置为 0。在保存函数之前设置此值不会更改结果文件。

我在保存图像之前尝试了以下代码:

plot.InvalidatePlot();

甚至:

plot.InvalidatePlot();

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

plot.InvalidatePlot();

当我浏览用户界面时,我可以看到情节:保存功能恢复到正确的行为。没有例外,该图在保存之前有我的数据要绘制。

请帮忙...

【问题讨论】:

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

标签: c# wpf oxyplot


【解决方案1】:

我在使用 oxyplot 时遇到了同样的问题。我试图将图像导出到文件,但只有当我首先在屏幕上显示它时它才起作用。要使其工作,您必须以编程方式定义所有模型,并将模型绑定到 XAML。这样您就不必通过视图来正确导出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多