代码之家  ›  专栏  ›  技术社区  ›  Ivan-Mark Debono

第二个序列未添加到第一个序列之后[重复]

  •  0
  • Ivan-Mark Debono  · 技术社区  · 6 年前

    我目前在我的C Windows窗体应用程序(在Visual Studio 2013中)上有一个图表,它使用计时器逐渐在上面画一条线。我尝试设置X轴和Y轴的最小值和最大值,虽然Y轴值设置正确,并如图表所示,但X轴范围设置不正确,并在某个点停止(约17.9)。以下是我目前拥有的图表和计时器的代码:

    private void btnPlotGraph_Click(object sender, EventArgs e)
    {
        chart1.ChartAreas[0].AxisX.Minimum = 0;
        chart1.ChartAreas[0].AxisX.Maximum = double.Parse(txtTotalHorizontalDistance.Text);
        chart1.ChartAreas[0].AxisY.Minimum = 0 - double.Parse(txtInitialHeight.Text);
        chart1.ChartAreas[0].AxisY.Maximum = double.Parse(txtTotalVerticalDistance.Text);
        timer1.Tick += timer1_Tick;
        timer1.Start();
    }
    
    private void timer1_Tick(object sender, EventArgs e)
    {
        string[] xCoordinates = File.ReadAllLines("H:\\Computing Coursework\\Code\\FormPrototype\\testX.txt");
        string[] yCoordinates = File.ReadAllLines("H:\\Computing Coursework\\Code\\FormPrototype\\testY.txt");
    
        chart1.Series["Projectile1"].Points.AddXY(xCoordinates[i], yCoordinates[i]);
    
        if (i >= xCoordinates.Length - 1)
        {
            timer1.Stop();
        }
        else
        {
            i++;
        }
    }
    

    此外,下面是运行表单后的屏幕截图,以显示X轴最大值的问题(应为81.08,如文本框中所示):

    enter image description here

    0 回复  |  直到 9 年前
        1
  •  0
  •   TaW    9 年前

    你的错在x值上。

    当您将它们作为字符串添加时,它们的值都是 0 因此,除了在默认标签中显示它们,您不能对它们执行任何操作。没有格式,没有范围。

    确保将它们转换为数字,可能如下所示:

     string[] xStringCoordinates = File.ReadAllLines(yourFileName);
     double[] xCoordinates = xStringCoordinates.Select(x => Convert.ToDouble(x)).ToArray();
    

    注意:如果字符串包含有效数字,系统会转换y值,但x值不会。