【问题标题】:how to draw four (or more) workareas horizontally?如何水平绘制四个(或更多)工作区?
【发布时间】:2014-11-20 14:46:17
【问题描述】:

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

private void button1_Click(object sender, EventArgs e)
    {
        List<int> queue = new List<int>();
        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;
    }

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

............

............

............

............

............

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

……………………

……………………

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

【问题讨论】:

标签: c# charts position


【解决方案1】:

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

看起来默认的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% 的宽度。

好消息是这些数字将在调整大小期间保持不变..

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

这些东西这么难找是不是很奇怪? (这是我第三次尝试了..)

【讨论】:

  • 哇——它真的很有效。非常感谢您的时间和帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
相关资源
最近更新 更多