2

长期潜伏者,第一次海报。

我目前正在开发一个使用 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 副本,以说明我的意思。

谢谢!

4

0 回答 0