如何修改C#Chart控制图区域百分比

时间:2013-03-15 01:15:57

标签: c# mschart

如果我有一个包含2 chartAreas的图表控件,默认情况下图表控件会将chartAreas放在彼此的顶部,使得每个区域占据图表控件可用大小的50%。

有没有办法改变chartAreas的百分比,以便我可以说,顶部图表占据该区域的75%,而底部图表占25%?

2 个答案:

答案 0 :(得分:9)

所以,我最终找到了它,但我不认为它有很好的记录。每个chartArea都有ChartArea.Position属性。类型ElementPosition的此属性,包含与此问题相关的4个属性。

高度:获取或设置图表元素的高度 宽度:获取或设置图表元素的宽度 X:获取或设置适用图表元素左上角的相对X坐标 Y:获取或设置适用图表元素左上角的相对Y坐标。

当你深入挖掘时,HeightWidth属性也以相对坐标表示,这样你只能输入0 - 100。

基本上,你必须改变每个高度,每个Y移动它们。初始创建后,它不会自动调整其他数字。

例如,如果我只是将chartArea [1]的Height更改为更小的值,它仍将固定在之前的位置,这是有意义的,在它下面留下了很多空白区域。< / p>

如果我然后增加chartArea [0]的Height,它可能会覆盖我们刚刚调整大小的chartArea [1]。那么我必须设置chartArea [1]的Y将其向下移动,这样它就不会被绘制出来,并且空白区域消失了。

所以,为了得到类似于我在问题中提出的问题,我将其设置为:

chart1.ChartAreas[0].Position.Y = 10;
chart1.ChartAreas[0].Position.Height = 60;
chart1.ChartAreas[1].Position.Y = 70;
chart1.ChartAreas[1].Position.Height = 20;

为了使这个解释更加清楚,我将引用Chart控件将这些chartAreas作为“父”。

这些是百分比,但是对于这个例子,我们假设父母的大小是100像素。

这会将第一个chartArea开始显示为10 px,并使其高约60px。然后它开始以70px显示第二个chartArea,并使其大约20px高。

如果此图表高200像素,那么比例将是相同的,但实际像素将是双倍(因此将第一个图表区域设置为60将使其高120像素)。

我在实际程序中更多地填写了这个,因为它有标题覆盖轴标签,但我觉得这些数字有助于更好地解释它。

答案 1 :(得分:2)

您还可以将第二个图表.Y位置设置为第一个图表的底部。这样你只需要担心第一张图表的位置。代码看起来像这样:

chart1.ChartAreas[0].Position.Y = 10;
chart1.ChartAreas[0].Position.Height = 60;
chart1.ChartAreas[1].Position.Y = chart1.ChartAreas[0].Position.Bottom;
chart1.ChartAreas[1].Position.Height = 20;

当然,您也可以填充.Y位置,具体取决于图表之间需要的空白区域。我使用这种方法来构建一个使用多个图表的应用程序,它保证每个图表都能正确定位,无论单个图表是做什么的。