2012-11-08 4 views
4

x 축이 이동하는 C# 차트를 만드는 데 문제가 있습니다.도표 X 축 이동

내가 원했던 것은 새로운 Y 값을 추가하고 첫 번째 데이터 포인트를 제거하면서 왼쪽으로 x 축을 이동시키는 것입니다.

나는 오른쪽의 벌금 포인트를 추가 할 수

DataPoint dp2 = new DataPoint(x, rnd.Next(100)); 
chart1.Series[0].Points.Add(dp2); 
x++; 

내가

chart1.Series[0].Points.RemoveAt(0); 

하지만 난 그렇게하려고하면 모두가 않는 미세 왼쪽에있는 첫 번째 점을 제거 할 수 있습니다 작동하지 않으면 그래프의 시작 부분에 빈 공간을 추가하고 그래프 영역에 머 무르지 않고 오른쪽에서 벗어납니다.

DataPoint dp2 = new DataPoint(x, rnd.Next(100)); 
chart1.Series[0].Points.RemoveAt(0); 
chart1.Series[0].Points.Add(dp2); 
x++; 

내 문제의 전체 데모 : (-) 다음 마우스 클릭 (버튼을 연결 & 타이머 (1000MS 틱) 이벤트, 3 개 버튼 3 개 타이머를 차트를 만들 Form1.cs 파일의 맨 위에 내 코드를 붙여 넣습니다 내 코드 이벤트 핸들러에.)

using System; 
using System.Windows.Forms; 
using System.Windows.Forms.DataVisualization.Charting; 

namespace test_chart2 
{ 
    public partial class Form1 : Form 
    { 
     double x = 16; 
     Random rnd = new Random(); 
     public Form1() 
     { 
      InitializeComponent(); 


      DrawToGraph1(); 

     } 

     private void DrawToGraph1() 
     { 
      chart1.Series[0].Points.Clear(); 
      for (int g = 5; g <= 15; g++) 
      { 
       DataPoint dp = new DataPoint(g, rnd.Next(100)); 
       chart1.Series[0].Points.Add(dp); 
      } 
     } 
     private void timer1_Tick(object sender, EventArgs e) 
     { 
      DataPoint dp2 = new DataPoint(x, rnd.Next(100)); 
      chart1.Series[0].Points.Add(dp2); 
      x++; 
     } 
     private void timer2_Tick(object sender, EventArgs e) 
     { 
      chart1.Series[0].Points.RemoveAt(0); 
     } 

     private void timer3_Tick(object sender, EventArgs e) 
     { 
      DataPoint dp2 = new DataPoint(x, rnd.Next(100)); 
      chart1.Series[0].Points.RemoveAt(0); 
      chart1.Series[0].Points.Add(dp2); 
      x++; 
     } 
     private void button2_MouseClick(object sender, MouseEventArgs e) 
     { 
      timer1.Enabled = false; 
      timer2.Enabled = true; 
      timer3.Enabled = false; 
     } 
     private void button3_MouseClick(object sender, MouseEventArgs e) 
     { 
      timer1.Enabled = false; 
      timer2.Enabled = false; 
      timer3.Enabled = true; 
     } 
     private void button1_MouseClick(object sender, MouseEventArgs e) 
     { 
      timer1.Enabled = true; 
      timer2.Enabled = false; 
      timer3.Enabled = false; 
     } 
    } 
} 

내가

series1.IsXValueIndexed = true; 

을 사용하지만 난 내 프로젝트로 사용할 수 없습니다 싶은 일을하는 시간 X 축을 가지고 있는데이 옵션을 사용할 때 생성하지 않습니다 ~ 아이스 타임 라인 (축 라벨은 평소와 같이 가장 가까운 시간으로 반올림되지 않음) 및 그래프의 상단에 날짜를 표시하는 보조 X 축의 정렬 문제도 발생합니다.

답변

0

이 시도하고 어떻게되는지 알려주세요 :

입니다
private void timer3_Tick(object sender, EventArgs e) 
{ 
    DataPoint dp2 = new DataPoint(x, rnd.Next(100)); 
    Series mySeries = chart1.Series[0]; 
    chart1.Series.Clear(); 
    mySeries.Points.RemoveAt(0); 
    mySeries.Points.Add(dp2); 
    chart1.Series.Add(mySeries); 
    x++; 
} 

, 당신은 다음 차트에 다시 추가, 수정, 시리즈를 제거하는 시도 할 수 있습니다. Visual Studio에서 프로젝트를 쉽게 재구성 할 수 없기 때문에 직접 실행할 수 없습니다. 도움이 되길 바랍니다.

+0

nop 나는 며칠 전 지금 생각했는데, 그 생각은 시리즈를 잡고, theat에서 조정을 한 다음, 모두 한 번에 차트에 다시 추가하는 것입니다. 나는 여전히 같은 방식으로 행동하며 심각하게 이유를 파악할 수 없습니다. (입력 키를 치면 opps가 게시 됨 : - /, lol sorry) – JackDinn

+0

VS가있는 경우 내 데모를 재구성 할 수 있어야합니다. 새 프로젝트를 시작하고 차트를 추가하고 3 개의 버튼을 3 타이머를 누른 다음 form1.cs에 내 데모 코드를 추가하십시오. – JackDinn