9

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

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

4

2 回答 2

12

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

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

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

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

例如,如果我只是将HeightchartArea[1] 更改为更小的值,它仍将锚定在以前的位置,这是有道理的,在它下面留下很多空白。

如果我再增加HeightchartArea[0] 的值,它可能会覆盖我们刚刚调整大小的 chartArea[1]。因此,我必须设置YchartArea[1] 将其向下移动,这样它就不会被覆盖,并且空白区域消失了。

因此,为了获得类似于我在问题中提出的内容,我将其设置为:

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

为了使这个解释更清楚一点,我将这些 chartAreas 所在的 Chart 控件称为“父级”。

这些是百分比,但对于本示例,让我们假设父对象的大小为 100 像素。

这将第一个 chartArea 设置为 10 像素开始显示,并使其高约 60 像素。然后它开始在 70px 处显示第二个 chartArea,并使其高约 20px。

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

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

于 2013-03-15T19:20:02.787 回答
3

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

于 2013-07-10T15:03:34.227 回答