c# - 如何在不写入文件的情况下将 DataVisualization.Charting.Chart 的图像转换为 iTextSharp.text.Image?

标签 c# winforms image charts itextsharp

我正在编写一款用于测量数据可视化的软件。为此,我使用 System.Windows.Forms.DataVisualization.Charting.Chart 并且我知道我可以通过 chartObj.SaveImage 获取显示的图像以将其存储到文件中。

我的软件应该有一个 PDF 导出,其中应该包含图片。为此,我正在使用 iTextSharp。同样,我确实知道如何通过 iTextSharp.text.Image.GetInstance 将我存储在文件中的图片放入 PDF。

所以现在我可以拍摄图表的照片,将其放入文件(例如 .jpg 文件)并再次加载该文件以将其放入我的 PDF 中。现在我正在寻找一个很好的解决方案,将图片转换为 PDF 而无需将其存储到文件中,可能是通过 Stream 或类似的方式。我已经尝试了很长时间,但直到现在我还没有成功。我想到了类似的东西

Stream imageStream = image of chartObj;
iTextSharp.text.Image picture = iTextSharp.text.Image.GetInstance(imageStream);

据我所知,我未能将 chartObj 中的图片放入 Stream 而不是文件中。如果我有这个,我想我可以通过 iTextSharp.text.Image.GetInstance 加载流。

您可以提供任何帮助吗?我猜这并没有那么难,但我是 C# 和 iText 的新手,所以我有点卡在这里。

提前感谢您对此的每一个想法!

安娜

最佳答案

将图像保存到内存流:

using (var chartimage = new MemoryStream())
  {
    chart.SaveImage(chartimage, ChartImageFormat.Png);
    return chartimage.GetBuffer();
  }

来自: Microsoft Chart Controls to PDF with iTextSharp and ASP.NET MVC

关于c# - 如何在不写入文件的情况下将 DataVisualization.Charting.Chart 的图像转换为 iTextSharp.text.Image?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12582608/

相关文章:

c# - 如何在不降低质量的情况下从 C# 放大图像(任何类型)

Rosetta Stone 上的 C 快速中值滤波器(C I/O 和图像)

javascript - MVC : Ajax data not getting to Controller

c# - 几代垃圾收集器是什么意思?

.net - Control.DestroyHandle 何时被调用?

python - 屏幕尺寸变化时 Kivy 图像更新

c# - 表单中的 MVC4 多按钮不工作 JQM

c# - Kentico UserInfoProvider.IsAuthorizedPerClass 未按预期工作

c# - 在设计模式下从窗体中删除自定义控件后清除自定义控件属性的 InnerList 元素

c# - TabControl 闪烁