IMSL C# Chart
Programmer’s Guide
Writing a Chart as a Bitmap Image File  Previous Page  Contents  Next Page

Writing a Chart as a Bitmap Image File

An IMSL C# chart can be saved as an image file using the .NET Image class.

The chart tree is constructed in the usual manner. Here a method called
CreateChart is used to create a simple chart, with the null-argument Chart constructor. The chart is written to file without being displayed using the chart.WritePNG method. This method does not require a desktop GUI application using Windows.Forms, but can be run in a “headless” mode

If a chart is being displayed, a Bitmap object can be created using the chart.PaintImage() method. This object can then be used like any other .NET Image, including calling its Save method as in this example. For the Image returned by PaintImage not to be null, the chart must have been rendered to the screen. Therefore, this method is not suitable for headless applications.


(Download Code)

using System;
using System.Drawing;
using System.IO;
using Imsl.Chart2D;

public class SampleImageIO : FrameChart
{
    public SampleImageIO()
    {
        this.Chart = CreateChart();
        // Create an image file from the chart’s image once displayed
        Bitmap bmap = new Bitmap(this.Chart.PaintImage());
        bmap.Save(“SampleImageIO2.png”, 
            System.Drawing.Imaging.ImageFormat.Png);
    }

    static Chart CreateChart() {        
        Chart chart = new Chart();
        AxisXY axis = new AxisXY(chart);      
        
        int  npoints = 20;
        double dx = .5 * Math.PI/(npoints-1);
        double[] x = new double[npoints];        
        double[] y = new double[npoints];       

        //  Generate some data       
        for (int i = 0; i < x.Length; i++)
        {            
            x[i] = i * dx;            
            y[i] = Math.Sin(x[i]);            
        }        
        new Data(axis, x, y);   
        return chart;
    }   

	 public static void Main(string[] argv)
	 {
        // Create an image file using WritePNG without a display
        Chart chart = CreateChart();
        chart.ScreenSize = new Size(500, 500);
        FileStream fs = 
            new FileStream(“SampleImageIO.png”, FileMode.OpenOrCreate);
        chart.WritePNG(fs, 500, 500);

        System.Windows.Forms.Application.Run(new SampleImageIO());
	 }
}




©  Visual Numerics, Inc.  All rights reserved.  Previous Page  Contents  Next Page