2011-04-14 6 views
4

저는 현재 8800x6800 이상의 대형 엔지니어링 도면을 표시해야하는 응용 프로그램을 개발 중입니다. 요구 사항에 따르면 사용자는 이미지를 이동하고 확대/축소 할 수 있어야합니다. 이상적으로는 이미지에 주석을 달 수 있기를 원합니다. Windows Photo Viewer를 보면, 필자가 에뮬레이션하고자하는 성능 및 기능을 주석 부분을 제외하고 볼 수 있습니다.WPF에서 큰 이미지를 효율적으로 표시하고 확대/이동하는 방법

지금까지 이미지를 표시하는 데 몇 가지 다른 방법을 시도했지만 원하는 성능을 제공하지 못했습니다. 그들은 의 메모리를 사용하거나 속도가 느립니다. 아이로 Image

  • Viewbox : 다음은 내가 찍은 접근 방식이다. 메모리 사용은 괜찮지 만 Viewbox의 크기를 조정하는 속도가 느립니다. 나는이 방법으로 확대/패닝을 시도하지 않았다.
  • InkCanvasImage을 배경 또는 아동으로 설정하십시오. 이 방법을 사용하면 ScaleTransformTranslateTransform의 줌/패닝이 그렇게 보였지만 450-600 MB 범위에서 메모리 사용량이 늘어날 수있었습니다.

이것은 .NET/WPF를 사용한 이미지 조작에 대한 첫 번째 진전이며 주제에 대한 지식이 상당히 제한적입니다. 특히 WPF를 사용하여 큰 이미지를 처리 ​​할 때 가장 좋은 방법은 무엇입니까? 이미지를 바둑판 식으로 배열하면 (딥 줌과 같은) 도움이 될 수 있지만이 작업을 수행하는 방법이나 내 상황에서 가장 좋은 아이디어인지는 확실하지 않습니다. 이 점을 더 잘 이해하는 데 도움이 될만한 자료를 알고 있습니까?

+0

결국이 문제를 해결 했습니까? –

답변

1

이미지를 별도의 조각으로 나눠서 성능을 향상시키기 위해 한 번에 작은 하위 집합 만 표시하는 것을 의미하는 "가상화"는 "가상화"라고합니다.

Microsoft는 항목 가상화에 대한 훌륭한 블로그를 보유하고 있으며 가상화 된 컨트롤의 시작점으로 사용할 수있는 VirtualCanvas의 참조 구현을 제공합니다. 여기

링크 :이 블로그 토론의 일부뿐만 아니라, 부드러운 스크롤과 최고의 UI 응답 타일의 선제로드에 대한 논의로 확대 및 스케일을 포함 http://blogs.msdn.com/b/jgoldb/archive/2008/03/08/performant-virtualized-wpf-canvas.aspx

참고.

관련 문제