2009-08-15 6 views
1

저는 WPF를 다시 배우려고합니다. TaskNetager에서 볼 수있는 CPU 성능과 같은 종류의 선 그래프가있는 작은 프로젝트를 시작했습니다. 그래프는 근본적으로 그것의 아이들에 추가 된 펀치 선을 가진 캔버스이고 여기에서 찾은 Avalon 샘플을 기반으로합니다. http://msdn.microsoft.com/en-us/library/aa480159.aspxWPF에서 스크롤하는 선 그래프를 모델링하는 방법은 무엇입니까?

현재 그래프의 맨 오른쪽 가장자리에 도달하면 데이터 세트가 지워지고 내 x 좌표를 0으로 다시 설정하면 그래프가 지워진 후 왼쪽에서 다시 그려집니다.

y = value; 
x = x + 1; 
if (x == samples) 
{ 
    CpuGraphAnimation2d.Children.RemoveRange(0, samples); 
    x = 0; 
} 

는 내가 뭘 원하는 그래프 '스크롤'을 가지고있는 새 값이 도착하면 왼쪽 효과적으로 모든 이전 값이 왼쪽으로 셔플과 가장 왼쪽 값을 삭제합니다.

WPF에서이 효과를 얻는 가장 효율적인 방법은 무엇입니까?

답변

1

다음과 같은 작업을 수행하기 전에 yourarray의 첫 번째 요소를 제거, 다음과 같이 StreamGeometry를 만드는 시도 할 수 : 그래프 각 패스를 재생하는 빠른 방법입니다

 StreamGeometry sg = new StreamGeometry(); 

     using (StreamGeometryContext context = sg.Open()) 
     { 
      context.BeginFigure(new Point(0, yourarray[0]), false, false); 
      for (int x = 0; x < len; x++) 
      { 
       context.LineTo(new Point(x, yourarray[x], true, true); 
      } 

      sg.Freeze(); 
      System.Windows.Shapes.Path path = new System.Windows.Shapes.Path(); 
      path.Data = sg; 
      path.Stroke = Brushes.Red; 
     } 

합니다. 코드 끝에 생성 된 경로는 윈도우의 컨트롤이나 패널에 추가해야합니다.

관련 문제