2013-06-09 3 views
0

C# .NET의 차트에 대해 몇 가지 질문이 있습니다. 현재 직렬 포트에서 데이터를 실시간으로 표시하는 응용 프로그램에서 작업하고 있습니다.C# .NET의 차트에 대한 약간의 의문

저는 .NET 도구 상자의 간단한 차트를 사용하여 스플라인 시리즈를 사용하고 있으며 달성하고자하는 두 가지 주요 기능이 있습니다.

첫 번째 질문 - 차트의 오른쪽 부분에 표시되는 데이터 값을 표시하고 싶습니다. 새 데이터가 오면 왼쪽으로 이동하고 싶습니다. 어떻게 해야할지 모르겠습니다. 제대로 설명해주세요. 아직 이미지를 게시 할 수 없기 때문에 주요 아이디어를 얻을 수 있기를 바랍니다.

차트를 새로 고칠 때마다 모든 데이터 포인트를 다시로드하여 이러한 유형의 동작을 달성했습니다. 처음에는 모두 비 었으며 데이터가 오면 결국에는 더 큰 값의 큐를 넣었습니다.

chartAccelerationX.Series["XSeries"].Points.Clear(); 
dataPointTable = dataPointQueue.ToArray(); 
for (int i = 0; i < 1000; i++) 
{ 
    DataPoint dataPointX = new DataPoint(); 

    if (1000 - dataPointTable.Length < i) 
    { 
     dataPointX.SetValueXY(i + 1, dataPointTable[i - 1000 + dataPointTable.Length].x); 
    } 
    else 
    { 
     dataPointX.IsEmpty = true; 
    } 
    chartAccelerationX.Series["XSeries"].Points.Add(dataPointX); 
} 
chartAccelerationX.Update(); 

그것은 꽤 잘 작동하지만, 내가 말했듯이, 나는 모든 1000 데이터 포인트마다 내가 차트를 업데이트를 만드는거야 (내가 수행

코드가 그렇게 할 수 있다는 것을 명확히하기 위해 100ms마다) 성능면에서 비참 할 것입니다 (총 6 ~ 8 개의 차트가 필요합니다). 정확한 데이터 수 (여기서는 1000)로 제한됩니다.

데이터 포인트의 양이 늘어남에 따라 동적으로 그리고 내가 원했던 두 번째 기능 (예 : 한 번에 50 개의 레코드 만 표시하는 자동 맞춤 스크롤 막대)을 구현하는 더 쉬운 방법은 없을까요?

나는 스크롤바도 사용하고 있었지만 1000 개의 레코드 중 50 개의 레코드를 표시하도록 설정되어 있었고 지금은이 모든 빈 데이터 요소를 스크롤 할 수있었습니다. 정확한 데이터 포인트 수가 차트에 표시되고 데이터가 추가 될 때마다 스크롤 바를 표시하도록 설정할 수는 있지만 어쩌면 더 쉬운 방법일까요?

나는 당신이 내가 말하려고했던 것을 이해했으면 좋겠다. 나는 여전히 내 영어로 작업하고있다. 당신이 WPF를 사용할 수있는 경우

+0

당신이 정말로 필요하십니까 전에 꽤 고속 데이터 샘플링을 사용했습니다 그래프를 초당 10 번 업데이트 하시겠습니까? 1 초에 한 번 또는 더 오래 놓아야 할 수도 있습니다. –

+0

글쎄, 나는 부드럽게 보이게하고 싶었다. 초당 50 데이터 포인트가있을 것이므로 실시간으로보기 좋을 것이다. 필요하다면 나는 그 시간을 길게 만들 수 있지만 어쨌든 나는 할 수있다. 그와 같은 것을 성취 할 수있는 더 좋은 방법이 없는지 알고 싶습니다. –

+0

많은 데이터 요소가있을 때 .Net 차트를 빨리 만들면서 많은 성공을 거두지 못했습니다. –

답변

1
+0

오, 그래, 당신의 조언을 주셔서 감사합니다. 아직 정보가 WPF는 아니지만 더 나은 옵션이 있다면 그것을 사용해야합니다;) WPF를 사용하여 차트를 만들 수 있습니까? ? 예를 들어 다른 창에서? 그것은 가능해야합니다, 맞죠? : P –

+0

네, WPF를 윈도우 형태로 호스팅 할 수 있습니다. –

+0

위대한 소리입니다. 임 : 감사합니다. :) –