如何使用C#2010将图表图像复制到剪贴板?

Cur*_*urt 16 .net c# charts

我正在学习C#,因为我编写了一个与光谱仪接口的程序.我已经想出如何从光谱仪获取光谱并将其绘制在MS图表上.

如何将图表的图像复制到剪贴板中以便将其粘贴到其他程序中?

我正在使用Visual Studio C#2010.

我找到了chart.SaveImage方法,但我真的宁愿将图像复制到剪贴板而不是将其保存到磁盘.我还没有找到chart.CopyPicture方法.

我还想出了如何将原始数据作为字符串复制到剪贴板,然后可以将其粘贴到Excel工作表中并绘制,但我宁愿只复制图像本身.


附加数据:

我可以使用以下代码将图像复制到剪贴板:

spectrumChart2.SaveImage("Image.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
Image img = Image.FromFile("Image.jpg");
System.Windows.Forms.Clipboard.SetImage(img);
Run Code Online (Sandbox Code Playgroud)

当然有办法直接获取图像剪贴板而不保存并首先从磁盘文件中检索它.拜托,请让我知道这是怎么做的(在我的一个同事找到这个kludge之前)!

小智 27

要从图表控件获取图像,请将其保存到内存流,创建位图,然后将其发送到剪贴板:

using (MemoryStream ms = new MemoryStream())
{
    chart1.SaveImage(ms, ChartImageFormat.Bmp);
    Bitmap bm = new Bitmap(ms);
    Clipboard.SetImage(bm);
}
Run Code Online (Sandbox Code Playgroud)