2015-11-30 8 views
4

Из документации на OxyPlot Documentation Website говорится, что он использует класс PngExporter. Этот класс больше не существует в OxyPlot, но есть классы PngEncoder и PngDecoder. Я подозреваю, что эквивалентный метод для PngExporter.Export равен PngEncoder.Encode, однако он запрашивает 2d-массив из OxyColor, называемый «пикселями», но я не знаю, откуда взять эти данные. ПРИМЕЧАНИЕ: Экспорт в SVG или PDF работает, но эта форма бесполезна.Использование OxyPlot для рендеринга изображений png из PlotModel

Проблема: Мне нужно экспортировать PNG из кода только PlotModel в OxyPlot, но документация устарела.

Это код, мне сказали, чтобы использовать:

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

Использование файлов [Oxyplot GitHub] для построения Librarys, как 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.