WPF에서 경로 도우미 프로그램을 만들고 있는데 수만 개의 가장자리가있는 그래프 개체 인지도를 표시해야합니다. 확대, 이동, 가장자리 선택과 같이이지도와 상호 작용하고 싶다면이 선을 그리는 데 가장 좋은 옵션은 무엇입니까? 시도한 모든 옵션은 실제로 렌더링 성능이 느려지는 것으로 나타났습니다.WPF에서 수천 줄의 빠른지도 그리기
답변
Shape을 사용할 수 있습니다.이 객체와의 상호 작용은 특히 간단하지만 수천 개의 가장자리를 처리하는 경우 화면의 벡터 그래픽을 렌더링하는 데 사용할 수있는 시각적 객체 인 DrawingVisual 클래스를 사용하는 것이 좋습니다. 및 해당 RenderOpen 메서드. 나는 당신에게 similar problem을 가지고 있었고 DrawingContext을 사용하여 내 응용 프로그램의 성능을 향상 시켰습니다.
변환하려면 특히 ScaleTrasnform 변환을 사용해야하며 패널이나 모양에 변형을 적용해야합니다.
DrawingVisual은 이벤트 handlig를 제공하지 않으므로 Shape를 사용하면 이벤트를 사용하여 가장자리와 상호 작용할 수 있습니다. DrawingVisual에서는 Hit-Testing을 구현해야합니다.
WPF를 사용해야하는 경우 DrawingVisual 클래스를 살펴보십시오. 이렇게하면 더 빠른 성능을 제공하는 낮은 수준의 드로잉 프리미티브에 액세스 할 수 있습니다. 그러나 하위 수준의 객체를 다루는 경우 포커스 및 히트 테스트와 같은 문제를 처리해야합니다. DrawingVisuals에 MSDN 항목 여기를보세요 :
http://msdn.microsoft.com/en-us/library/system.windows.media.drawingvisual.aspx http://msdn.microsoft.com/en-us/library/ms742254.aspx
그리기 성능을 향상시키기 위해 한 번에 모든 라인을 렌더링하지 않도록해야합니다. 낮은 수준의 비주얼을 사용해도 성능을 향상시킬 수 없습니다.
당신은 이러한 것들을 수행 할 필요가 : 당신은, 고속도로, 지방 도로를 하나 개의 레이어에 그 라인이 후 고속도로에 관련된 라인의 기초에이를 분할 할 수 있습니다 다른 layers.You에서 레이어를 분할하는 경우
- 을 , Streets 등
- 공간적으로 색인을 생성하는 메커니즘을 찾아야합니다. 공간 인덱싱을 사용하면 경계 상자에 따라 선을 인덱싱 할 수 있습니다.
- 테두리 상자에 선을 표시하고 해당 경계 상자에있는 선만 렌더링하십시오.
- 확대/축소 수준이 높은 중요한 선 (고속도로, 고속도로)을 렌더링 한 다음 점차적으로 다른 선 (중요도가 낮은 도로, 거리) 지도 확대시.
아이디어를 제공해 주셔서 감사합니다. 다른 레이어를 구현하려고합니다. –
- 1. WPF에서 3D 선 그리기
- 2. WPF에서 XAML지도 그리기
- 3. WPF에서 2px 해치 브러시 그리기
- 4. 빠른지도/축소 기능이있는 NoSQL 솔루션
- 5. 은 WPF에서 수천 개의 캔버스 요소를 효율적으로 렌더링하고 있습니까?
- 6. DrawingContext.DrawText()를 사용하여 WPF에서 세로 텍스트 그리기
- 7. WPF에서 여러 각도를 지원하는 삼각형 그리기
- 8. 그룹화 수천
- 9. JSON을 사용하여 여러 줄의 단일 Google 선형 차트 그리기
- 10. WPF에서 두 개의 사용자 정의 컨트롤을 연결하는 선 그리기
- 11. Firefox에서 천천히 html5 그리기
- 12. 수천 줄의 Java 코드를 리팩토링하는 방법은 무엇입니까? 사용할 수있는 도구가 있습니까?
- 13. 수천 개의 가장자리가있는 neo4j
- 14. 문자열로 진수로 변환 - 수천
- 15. wpf 이미지에서 그림 그리기
- 16. 세계지도 위에 그래프 그리기
- 17. WPF에서
- 18. WPF에서
- 19. vC++ mfc에서 화살표 그리기
- 20. DrawingContext의 외곽선이있는 DrawingContext의 선 그리기
- 21. 그리기
- 22. money_format이있는 수천 개의 분리 기호?
- 23. 수천 개의 스레드를 모니터링하는 GUI
- 24. 수천 개의 점을 도장으로 차트하기
- 25. 수천 개의 TCP 소켓 폴링
- 26. iOS에서 수천 개의 주석 관리하기
- 27. 수천 개의 XML 파일로 검색하십시오.
- 28. NHibernate는 수천 개의 아이템을 저장합니다.
- 29. 수천 개의 값을 교환하는 효율성
- 30. 수를 수천, 수백 등으로 나누십시오.
감사합니다. 나는 DrawingVisual과 함께 할 것이라고 생각합니다. –