2010-08-09 3 views
0

차트를 렌더링 한 다음 WPF를 사용하여 추가 배포 할 수 있도록 하드 드라이브에 저장하는 것이 가장 좋은 방법은 무엇입니까? 제가 다음 유형을 사용하여이를 달성하는 다수의 방법을 발견WPF에서 차트를 렌더링하는 가장 좋은 방법은 무엇입니까?

  1. DrawingVisual과 - 유형의 객체를 생성하고 그 문맥에 그래픽을 렌더링하는 단계;
  2. 셰이프 - 셰이프 클래스에서 파생 된 다음 실제 렌더링이 발생하는 속성 인 DefiningGeometry를 재정의합니다.
  3. PathFigure -이 클래스의 인스턴스에 LineSegment -s를 추가 한 다음이 인스턴스를 Canvas에 추가합니다.
  4. Adorner - 그것으로부터 파생 된 다음 OnRender 메서드를 재정의합니다.
  5. WritableBitmap - 렌더링 한 다음 비트 맵을 Canvas에 추가합니다.

물론 나는 이들 각각이 얼마나 빠른지 테스트하기 위해 앱을 작성하려고합니다. 하지만 아무도 말해 줄 수 없다 :

  • 나는 올바른 길을 가고 있는가?
  • 그런 렌더링을 수행하는 다른 방법이 있습니까?
  • 어느 하나가 성능면에서 에서 가장 좋습니다.

답변

1

모두 실제 사용량에 따라 다르지만 하드 드라이브에 저장하면 "추가 배포"가됩니다. 이미지로 저장한다고 가정합니다. (jpg 또는 png) wpf 개체 (xaml)로.

  1. WPF는 작업에 적합한 도구입니다 경우 고려해야가, WPF는 UI 프레임 워크가 아닌 일반적인 이미지 처리 라이브러리입니다, 그것은 이미지를 생성하기위한 완전히 다른 뭔가를 사용하는 것이 가장을 할 수있다.

  2. 적절한 병목 현상을 피하기 위해 성능 병목 현상은 이미지를 인코딩하여 디스크에 저장하는 것입니다. 실제로 렌더링하지는 않으므로 코딩하기가 더 쉬운 방법을 선택해야합니다.

  3. 고성능 WPF 차트에 대한 모든 기사는 : 10,000 포인트 이상의 차트 (성능 문제가있는 곳이기 때문에), b : GUI에 표시하는 차트 (그렇지 않으면 비트 맵을 생성하기위한 이미지 처리 라이브러리)와 항상 변화하는 c : 차트 (데이터 바인딩과 함께 잘 작동 함) - 차트를 디스크에 저장하는 것에 대해 이야기하지 않는 이유가 있습니다. 점의 매우 많은 수의

  4. : WPF에서 그리는

    • 가장 빠른 방법 FrameworkElement에 (하지 Adorner)에서 상속의 OnRender 무시하는 것입니다.
    • 데이터가 자주 변경되는 경우 하나의 값이 변경 될 때 모든 것을 다시 렌더링 할 필요가 없으므로 여러 DrawingVisual 개체를 사용하는 것이 좋습니다. 저장 한 후에도 이미지가 변경되지 않으므로 관련이 없습니다. 어쨌든.
    • WritableBitmap은 원시 비트 맵 액세스에 사용되며 모든 멋진 레이아웃과 드로잉을 포기하기로 결정할 때 사용합니다. 오버 헤드를 취할 수 없기 때문에 WPF가 제공합니다. 위의 첫 번째 지점.

그래서, 당신은 WPF 렌더링 속도 중 하나 이상의 디스크에 이미지를 저장해야하는 경우가 :-) 잘못된 질문을 요청하고, 병목을하지 않는 요약하거나 당신에 WPF를 사용하지 않아야 ~로 시작하십시오. WPF를 사용한다면 가장 쉬운 코드를 선택하십시오.

BTW : Adorers는 일반 UI 위에 '떠 다니는'요소를 표시하는 데 사용되며 툴팁과 같은 기능에는 사용할 수 있지만 기본 차트 렌더링에는 사용할 수 없습니다. 사용법은 이미지를 디스크에 저장하고 있음), FrameworkElement는 찾고있는 기본 클래스입니다.

+0

감사합니다, Nir, 답변입니다. 그것을 읽었을 때, 나는 틀린 질문을 한 것을 깨달았다.) – Niccolo

관련 문제