c# - 如何调整图表的大小超过屏幕分辨率?

标签 c# winforms charts

我有一个带有折线图的 C# 4.7 WinForms 应用程序。我想以非常大的分辨率保存图表图像,例如 10000x2000。这是我存档的内容:

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);

该代码保存 3860x1080 分辨率的 jpeg 图像,我可以放大我需要的点。但这还不够,我想将表格或图表放大到 得到一个像 10000x2000 这样的图像,VS 说它不能比我的屏幕大。 我在这张图表上有很多数据,所以更大的表格为我提供了图表上的更多数据。其他人需要图片才能看到最多的信息。

我该怎么做?

最佳答案

这很简单。

您需要做的就是在代码中创建图表,而不是在屏幕上显示它。

现在您可以根据需要调整它的大小..:

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);

一些注意事项:

  • 您可能还想添加一个 Legend,因为动态创建的 Chart 没有任何默认元素。

  • 如果您愿意,可以使用已有的图表,将其内容序列化为文件(或流),然后将其加载(反序列化)到大图表中..

  • 当尺寸增长很多时,MSChart 的自动智能往往会达到某个极限;所以准备好调整线宽、字体等的一些设置。

  • 您可能还想加载保存的图像并将 dpi 设置为比默认值更大的值,即屏幕分辨率。

  • 结语:有时最好将图表保存为vector格式;这些也在 SaveImage 方法中提供。

更新:也许您想像 Jimi 上次评论中那样结合矢量和像素格式。

你可能想研究this讨论一些常规选项的帖子。

关于c# - 如何调整图表的大小超过屏幕分辨率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57171078/

相关文章:

c# - 从C#调用VB.Net函数

c# - C#中的滚动事件

excel - 使用VBA删除具有空白系列名称的图例条目

javascript - 图表 js 中带有注释插件和类别轴的垂直线?

ios - 有没有好的 iPhone 图表库?

c# - 如何使用 javascript 在 LinkBut​​ton 模式下触发 BulletedList?

c# - 创建 linq 查询以使用与智能手机相同的方式搜索联系人

c# - 如何在 C# 的富文本框中为文本着色?

winforms - 过滤 WinForm DataGridView

C# DataGridView AutoSizeRowsMo​​de 问题