2015-11-30 107 views
4

OxyPlot Documentation Website的文档中,它表示使用PngExporter类。该类不再存在于OxyPlot中,而是存在称为PngEncoderPngDecoder的类。我怀疑PngExporter.Export的等效方法是PngEncoder.Encode然而它要求一个叫做“像素”的OxyColor二维数组,但我不知道从哪里得到这些数据。 注意:导出到SVG或PDF工作,但这种形式是无用的。使用OxyPlot从PlotModel渲染png图像

问题:我需要从OxyPlot中的PlotModel代码中导出PNG,但文档已过时。

这是我已被告知使用的代码:

using (var stream = File.Create(fileName)) 
    { 
     var pngExporter = new PngExporter(); 
     pngExporter.Export(plotModel, stream, 600, 400, Brushes.White); 
    } 
+0

它在文档中说:“PNG出口商是在特定于平台的库(OxyPlot.Wpf,OxyPlot.WindowsForms”)中实现的 - 您是否已加载其中的一个? – stuartd

+1

使用项目的GitHub版本允许我获取PngExporter在OxyPlot.Wpf中的类,遇到了一些问题,但最终它已经工作了,谢谢你的回复。 –

回答

2

使用[GitHub的Oxyplot]文件来构建图书馆的,既oxyplot和oxyplot.wpf,然后使用这些库来代替。 注意导出PNG的任何方法必须具有STAThread标记。

2

为了增加杰米的答案,如果你要导出一个PNG从说一个类库,你可以做这样的事情与STAThread:

 var thread = new Thread(() => 
     { 
      PngExporter.Export(plotModel, @"C:\file.png", 600, 400, OxyColors.White); 
     }); 
     thread.SetApartmentState(ApartmentState.STA); 
     thread.Start(); 
     thread.Join(); 

这是采用了最新的预发布V1.0.0 -unstable2100。