简体   繁体   中英

How to resize chart more than screen resolution?

I have a C# 4.7 WinForms application with line chart. I want to save chart image with very large resolution eg 10000x2000. Here is what I have archived:

Form1.Width = 3860; //my screen width resolution - maximum allowed
Form1.Height = 1080; //my screen height resolution - maximum allowed
chart1.Dock = DockStyle.Fill;
chart1.SaveImage(saveFile.FileName, ChartImageFormat.Jpeg);

That code saves jpeg image with 3860x1080 resolution and i can zoom in points I need. But it is not enough and I want to enlarge my form or chart to get an image like 10000x2000, VS says it cannot be larger than my screen. I have a lot of data on this chart, so bigger form provides me with more data on a chart. Picture is required for other people to see the maximum info.

How can I do it?

This is quite simple.

All you need to do is create the Chart in code without displaying it on screen.

Now you can size it as needed..:

Chart bigChart = new Chart();
bigChart.ChartAreas.Add("ca");
Series s1 = bigChart.Series.Add("s1");
s1.BorderWidth = 5;
s1.ChartType = SeriesChartType.Line;

// testdata 

Random rnd = new Random(8);
for (int i = 0; i < 111; i++)
{
    s1.Points.AddXY(rnd.Next(123) + i, rnd.Next(12 * i)) ;
}

bigChart.Size = new Size(10000, 8000);

bigChart.SaveImage(filename, ChartImageFormat.Png);

A few notes:

  • You may want to add a Legend as well, as the dynamically created Chart has none of the default elements..

  • If you want to you can use a chart you have, serialize its content to a file (or stream) and then load (deserialize) it into the big chart..

  • The automatic smartness of MSChart tends to hit some limit when the sizes grow a lot; so brace yourself for tweaking some settings for line width, Fonts etc..

  • You also may want to load the saved image and set the dpi to a bigger values than the default, which is the screen resolution..

  • Final remark: Sometimes it is better to save the chart as a vector format; these are also provided in the SaveImage method.

Update: Maybe you want to combine vector and pixel formats as in Jimi's last comments.

You may want to study this post which discusses a few general options.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM