长时间潜伏,第一次海报。
我目前正在使用一个使用OxyPlot生成图形的WPF应用程序。我希望将生成的图形导出到ReportDocument(RDLC)并使用CutePdf将其打印为PDF。我能够成功地做到这一点。
目前我采用的方法是执行以下代码片段。
using (var memStream = new MemoryStream())
{
PngExporter.Export(PlotModel, memStream, 850, 700, OxyColors.White, 120);
var fromStream = Image.FromStream(memStream);
fromStream.Save(memStream, ImageFormat.Png);
imageArray = new byte[memStream.Length];
memStream.Seek(0, SeekOrigin.Begin);
memStream.Read(imageArray, 0, (int) memStream.Length);
}
var stringBytes = Convert.ToBase64String(imageArray);
要将此传递给RDLC,我必须将内存流转换为Base64String并将其作为参数传递。如此;
var parameter = new ReportParameter("Chart", stringBytes);
reportViewer.LocalReport.SetParameters(parameter);
然而,虽然这一切都很精致,但是当放大时,PDF中的图像输出看起来非常模糊和像素化,而页面上的周围文字很清晰。
我已经明确将图像保存为磁盘,如PNG / BMP / JPG,但这似乎也会返回模糊的图像,因此不是尺码问题。
using (var stream = File.Create("testChart.png"))
{
var pngExporter = new PngExporter();
pngExporter.Export(PlotModel, stream);
}
我在这篇文章的attached a copy中显示了我的意思。
谢谢!