How to: Export a Chart to Image

  • 4 minutes to read

The following example demonstrates how to export a chart to an image. The GetChartImage method returns the image in the specified format, while the SaveChartImageToFile writes the chart's image in the specified format to the specified path.

  • Create a ChartControl and populate it with data.

    NOTE

    Add references to the following assemblies to use the ChartControl in your application:

    • DevExpress.Data.v20.1.dll
    • DevExpress.Utils.v20.1.dll
    • DevExpress.XtraEditors.v20.1.dll
    • DevExpress.Charts.v20.1.Core.dll
    • DevExpress.XtraCharts.v20.1.dll
    • DevExpress.XtraCharts.v20.1.UI.dll

    See Deployment for more information.

  • Use the ChartControl.ExportToImage method to create an image from a chart.

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms;
using DevExpress.XtraCharts;

namespace Series_PieChart {
    public partial class Form1 : DevExpress.XtraEditors.XtraForm {
        ChartControl pieChart;
        public Form1() {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e) {
            pieChart = new ChartControl();
            Series series1 = new Series("Land Area by Country", ViewType.Pie);
            series1.DataSource = DataPoint.GetDataPoints();
            series1.ArgumentDataMember = "Argument";
            series1.ValueDataMembers.AddRange(new string[] { "Value" });
            pieChart.Series.Add(series1);
            series1.Label.TextPattern = "{VP:p0} ({V:.##}M km²)";
            series1.LegendTextPattern = "{A}";
            pieChart.Dock = DockStyle.Fill;
            this.Controls.Add(pieChart);
        }

        private void OnButtonClick(object sender, EventArgs e) {
            SaveChartImageToFile(pieChart, ImageFormat.Png, "D://image1.png");
            Image image = GetChartImage(pieChart, ImageFormat.Png);
            image.Save("D://image2.png");
        }
        private Image GetChartImage(ChartControl chart, ImageFormat format) {
            // Create an image. 
            Image image = null;

            // Create an image of the chart. 
            using (MemoryStream s = new MemoryStream()) {
                chart.ExportToImage(s, format);
                image = Image.FromStream(s);
            }

            // Return the image. 
            return image;
        }

        private void SaveChartImageToFile(ChartControl chart, ImageFormat format, String fileName) {
            // Create an image in the specified format from the chart 
            // and save it to the specified path. 
            chart.ExportToImage(fileName, format);
        }
    }
    public class DataPoint {
        public string Argument { get; set; }
        public double Value { get; set; }

        public static List<DataPoint> GetDataPoints() {
            return new List<DataPoint> {
                    new DataPoint { Argument = "Russia",    Value = 17.0752},
                    new DataPoint { Argument = "Canada",    Value = 9.98467},
                    new DataPoint { Argument = "USA",       Value = 9.63142},
                    new DataPoint { Argument = "China",     Value = 9.59696},
                    new DataPoint { Argument = "Brazil",    Value = 8.511965},
                    new DataPoint { Argument = "Australia", Value = 7.68685},
                    new DataPoint { Argument = "India",     Value = 3.28759},
                    new DataPoint { Argument = "Others",    Value = 81.2}
                };
        }
    }
}