长期潜伏者,第一次海报。
我目前正在开发一个使用 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 时,PDF 中的图像输出似乎非常模糊和像素化,而页面上的周围文字清晰。
我已经尝试将图像以 PNG/BMP/JPG 格式保存到磁盘,但这似乎也返回了一个模糊的图像,所以这不是尺寸问题。
using (var stream = File.Create("testChart.png"))
{
var pngExporter = new PngExporter();
pngExporter.Export(PlotModel, stream);
}
我在这篇文章中附上了一份PDF 副本,以说明我的意思。
谢谢!