2011-03-30 2 views
0


폴리 라인 가상화를 원합니다. 내 응용 프로그램에서는 최대 7 개의 폴리 라인이 표시되며 모든 폴리선은 최대 900 만 개의 포인트를 보유합니다 (물론 소수점 만 볼 수 있음). 모든 폴리선에는 PointCollection에 대한 바인딩이 있습니다. 모든 폴리 라인은 ScrollViewer 컨트롤 내부에 있으며, 스크롤하면 모든 컨트롤에 적용됩니다.
이제 폴리 라인의 가상화가 가능한지 궁금합니다. Microsoft의 Chris Lovett가 제공 한 Virtual Canvas에 관한 기사를 찾았지만 문제가 해결되는지 확신 할 수 없습니다. 그런 경험을 가진 사람이 있습니까?
미리 감사드립니다.폴리선을 사용하는 UI 가상화

답변

0

비슷한 상황이 발생하여 다음과 같이 가상화를 구현하기로 결정했습니다. 처리중인 데이터 (폴리선 포인트)는 실제 좌표로 표시되며 디스플레이에 표시 할 수있는 것보다 훨씬 자세히 나타납니다. 또한 사용자는 확대하고 더 자세하게 볼 수 있어야합니다.

  1. 세계 좌표계에서 디스플레이의 2 개 (또는 3 개) 픽셀 사이의 거리를 결정하십시오. 이렇게하면 인접한 점과 동일한 픽셀 위치에서 끝나기 때문에 폴리 라인 점을 제거 할 수 있는지 여부를 결정할 수 있습니다.
  2. 포인트를 통한 루프 :

    a. 현재 점이 이전 점과 같은 화면상의 위치에 있으면 : 건너 뜁니다.

    b. 현재 점과 두 이전 점이 직선 상에있는 경우 이전 점이 필요하지 않습니다. 이전 점을 제거하고 현재 점을 추가하고 점을 천천히 구부린 곡선이 반올림되지 않도록 다음 점 (D)을 추가합니다. 직선).

  3. 이 날 약 30 %로 원래의 설정을 줄일 수 있지만 데이터에 완전히 의존 도움이 데이터에 따라 폴리 라인

을 그릴 수집 된 포인트를 사용합니다. 이 보장)

나는 단순히 내가 조정할 수 있으며, 조정이 성능 사이의 스위트 스폿 (sweet spot)을 찾을 수 있도록 내가 알고리즘에 매개 변수를 많이 추가 1.

단계부터 다시 계산에서 사용자가 확대

및 이미지 품질. 예를 들어, 엡실론을 추가하여 A와 C 사이의 거리와 B 사이의 거리가 B 지점을 계속 고려할 수 있도록 지정했습니다.

도움이 될지 알려주세요.

+0

요점은 분명하지만 폴리 라인이 객체/이미지를 시각화해서는 안되기 때문에 제 경우에는 효과가 없습니다. ECG와 같은 의료 데이터를 시각화합니다. 24 시간 ECG 측정 데이터가 있다고 가정하고 이미 데이터 세트를 줄였습니다. 당신은 수평/시간 방향으로 단순히 수직 방향으로 스크롤 할 필요가 없다는 것을 알 수 있습니다. 전체 데이터 집합의 하위 집합을 PointCollection에로드하고 필요에 따라 추가 데이터를로드하는 것이 가장 좋은 방법이라고 생각합니다. 그러나 문제는 데이터를 시뮬레이트하는 것이 완전히 스콜링이 가능하다는 것을 의미합니다 ... –

+0

아, 맞습니다. 내 해결책이 도움이되지 않을 것입니다. 귀하의 경우에는 아마 고정 된 점 집합을 만들고 스크롤 할 때이를 조작 할 것입니다. 이렇게하면 좌표 만 변경하고 컬렉션에 추가하거나 컬렉션에서 제거하지 않으므로 시간을 크게 절약 할 수 있습니다. –