我目前在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,如文本框所示):
答案 0 :(得分:0)
你的错是x值。
当您将它们添加为字符串时,它们的值都是0
,因此除了在默认标签中显示它们之外,您无法对它们执行任何操作。没有格式,没有范围..
确保将它们转换为数字,可能是这样的:
string[] xStringCoordinates = File.ReadAllLines(yourFileName);
double[] xCoordinates = xStringCoordinates.Select(x => Convert.ToDouble(x)).ToArray();
注意:如果字符串包含有效数字,系统会转换y值,但x值不会...