IMSL C# Chart Programmers Guide | Writing a Chart as a Bitmap Image File |
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 charts 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. |