如何横向绘制四个(或更多)工作区?

这是一个代码的和平,它绘制1/2/3/4(取决于备注)图表:

private void button1_Click(object sender, EventArgs e) { List queue = new List(); queue.Add(1); queue.Add(2); queue.Add(3); queue.Add(4); chart1.ChartAreas.Add(queue[0].ToString()); chart1.ChartAreas.Add(queue[1].ToString()); chart1.ChartAreas.Add(queue[2].ToString()); chart1.ChartAreas.Add(queue[3].ToString()); chart1.Series.Add("test1"); chart1.Series.Add("test2"); chart1.Series.Add("test3"); chart1.Series.Add("test4"); chart1.Series["test1"].ChartArea = "1"; chart1.Series["test2"].ChartArea = "2"; chart1.Series["test3"].ChartArea = "3"; chart1.Series["test4"].ChartArea = "4"; Random rdn = new Random(); for (int i = 0; i < 50; i++) { chart1.Series["test1"].Points.AddXY(rdn.Next(0, 10), rdn.Next(0, 10)); chart1.Series["test2"].Points.AddXY(rdn.Next(0, 10), rdn.Next(0, 10)); chart1.Series["test3"].Points.AddXY(rdn.Next(0, 10), rdn.Next(0, 10)); chart1.Series["test4"].Points.AddXY(rdn.Next(0, 10), rdn.Next(0, 10)); } chart1.Series["test1"].ChartType = SeriesChartType.FastLine; chart1.Series["test2"].ChartType = SeriesChartType.FastLine; chart1.Series["test3"].ChartType = SeriesChartType.FastLine; chart1.Series["test4"].ChartType = SeriesChartType.FastLine; } 

如果我绘制两个或三个图表,它会在水平方向上显示如下:

…………

…………

要么

…………

…………

…………

当我添加第四个图表区时,它开始创建第二个“列”

………… …………

………… …………

如何使用一列强制布局? 我找到了“位置”属性,但找不到如何正确使用它的方式:(

我认为所有对齐属性实际上更多地是关于数据对齐而不是关于区域本身。

看起来默认Position = Auto将赢得自己的想法,如何最好地使用空间,直到你关闭它; 所以我相信你必须在代码中设置ChartAreasPositions 。 这是一个可以玩的例子:

 float dist = 1f; float h = 23f; float w = 80f; CA1.Position = new ElementPosition(dist, dist * 2 + h * 0, w, h); CA2.Position = new ElementPosition(dist, dist * 3 + h * 1, w, h); CA3.Position = new ElementPosition(dist, dist * 4 + h * 2, w, h); CA4.Position = new ElementPosition(dist, dist * 5 + h * 3, w, h); 

ElementPosition的四个数字是浮点数,其中包含总图表区域的百分比(!)。 我允许一点距离并将ChartAreas设置为23%高度和80%宽度。

好消息是这些数字将在resize期间保留。

这是一个截图(没有数据):

在此处输入图像描述

这些事情很难找到,这不奇怪吗? (这是我第三次尝试..)