tags:

views:

445

answers:

2

I am learning C# as I write a program which interfaces with a spectrometer. I have figured out how to get a spectrum from the spectrometer and plot it on an MS chart.

How do I copy the image of the chart into the clipboard so that it can be pasted into other programs?

I'm using Visual Studio C# 2010.

I have found the chart.SaveImage method, but I would really rather copy the image to the clipboard rather than having to save it to disk. I have not found a chart.CopyPicture method.

I also figured out how to copy the raw data to clipboard as a string, which can then be pasted into an Excel worksheet and plotted, but I would rather just copy the image itself.


Additonal data:

I am able to copy the image to the clipboard using the following code:

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

Surely there is way to get the image directly Clipboard without saving and retrieving it from a disk file first. Please, please let me know how this is done (before one of my coworkers finds this kludge)!

+1  A: 

Use the static method...

Clipboard.SetImage(....);
Tim Jarvis
How do I get the image from the chart control?
Curt
+1  A: 

To get image from chart control, save it to memory stream, create bitmap and then send it to clipboard:

using (MemoryStream ms = new MemoryStream())
{
    chart1.SaveImage(ms, ChartImageFormat.Bmp);
    Bitmap bm = new Bitmap(ms);
    Clipboard.SetImage(bm);
}
pascon
It worked! Thank you so much for the help!
Curt