如何修改c# Chart控件chartArea的百分比

本文关键字:控件 Chart chartArea 百分比 何修改 修改 | 更新日期: 2023-09-27 18:04:12

如果我有一个图表控件,其中有2个chartAreas,图表控件默认将图表区域放在彼此的顶部,使每个区域占图表控件可用大小的50%。

有没有办法改变图表面积的百分比,这样我就可以说,让顶部的图表占75%的面积,底部的图表占25%?

如何修改c# Chart控件chartArea的百分比

所以,我最终找到了它,但是我不认为它有很好的文档。每个chartArea都有chartarea。position属性。这个属性的类型是ElementPosition,并且包含了与这个问题相关的4个属性。

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

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

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

例如,如果我只是将chartArea[1]的Height更改为较小的值,它仍然会锚定在它之前的位置,这是有意义的,在它下面留下很多空白。

如果我增加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控件称为"父控件"。

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

这将第一个图表区域设置为10像素开始显示,并使其高度约为60像素。然后它开始以70px的尺寸显示第二个chartArea,并将其设置为20px高。

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

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

您还可以将第二个图表的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位置,这取决于您希望在图表之间有多少空白。我将这种方法用于我构建的一个使用多个图表的应用程序,它保证无论对单个图表做了什么,每个图表都将被正确定位。