2016-04-29 35 views
0

我目前在我的C#Windows窗體應用程序(在Visual Studio 2013中)上有一個圖表,它逐漸使用計時器在其上繪製一條線。我試圖設置x軸和y軸的最小值和最大值,並且儘管y軸值正確設置並在圖表上按預期顯示,但x軸範圍沒有正確設置,並停在某個點(約17.9)。下面是圖表的代碼並且我現在有定時器:圖表x軸最大值未正確設置

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

您的錯誤是在x值。當你將它們添加爲字符串時,它們的值__all都是0__,所以除了在默認標籤中顯示它們之外,您無法對它們執行任何操作。沒有格式化,沒有範圍.. - 確保將它們轉換爲數字! - 注意:如果字符串包含有效數字,則y值會被轉換,但x值不會被轉換。 – TaW

+0

Btw:您是否真的想重新讀取文件?或者他們正在改變..? – TaW

+0

@TaW每次程序運行時文件的內容都會更改,所以我需要每次重新讀取它們。我不知道它的與所述值是字符串,因爲即使我替換具有整數值讀取文本框的行,即一問題「chart1.ChartAreas [0] = .AxisX.Maximum 82;」該程序仍然無法正常工作。 –

回答

0

你的錯是在x的值。

當你添加它們作爲字符串它們的值都是0所以你不能與他們做任何事情,除了在默認標籤顯示它們。沒有格式化,沒有範圍..

務必將其轉換爲數字,也許是這樣的:

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

注:如果字符串包含有效數字的y值確實會被系統轉換,但x值不..

相關問題