如果我有一个包含 2chartAreas
的图表控件,默认情况下,图表控件会将 chartAreas 放在彼此的顶部,使每个区域占据图表控件可用大小的 50%。
有没有办法改变 chartAreas 的百分比,这样我就可以说,顶部的图表占区域的 75%,底部的图表占 25%?
所以,我最终找到了它,但我认为它没有很好的记录。每个chartArea
都有属性ChartArea.Position。此属性为ElementPosition类型,包含与此问题相关的 4 个属性。
Height:获取或设置图表元素的高度。
Width:获取或设置图表元素的宽度。
X:获取或设置适用图表元素左上角的相对 X 坐标。
Y:获取或设置适用图表元素左上角的相对 Y 坐标。
当你深入挖掘时,Height
和Width
属性也以相对坐标表示,因此你只能输入 0 - 100。
基本上,你必须改变每个高度,每个 Y 来移动它们。初始创建后,不会自动调整其他数字。
例如,如果我只是将Height
chartArea[1] 更改为更小的值,它仍将锚定在以前的位置,这是有道理的,在它下面留下很多空白。
如果我再增加Height
chartArea[0] 的值,它可能会覆盖我们刚刚调整大小的 chartArea[1]。因此,我必须设置Y
chartArea[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 像素)。
我确实在我的真实程序中多加了一点,因为它的标题覆盖了轴标签,但我觉得这些数字有助于更好地解释它。
您还可以将第二个图表的 .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 位置,具体取决于图表之间需要多少空白空间。我将这种方法用于我构建的使用多个图表的应用程序,它保证每个图表都将正确定位,无论对单个图表做什么。