2011-10-05 12 views
5

Jaki jest najlepszy sposób na zarządzanie bardzo dużą ilością obrazów (10 000+) w WPF? To jest dla edytora map płyt 2d podobnego do tego: http://www.mapeditor.org/.Problemy z renderowaniem dużej kafelkowej mapy w WPF

W tej chwili mam płótno z wszystkimi kaflami jako zdjęcie i listą zawierającą różne obrazy do wyboru. Każdy kafelek jest dodawany do obszaru roboczego jako element potomny, a następnie zapisywany na liście w celu późniejszego dostępu. Malujesz na płótnie, ustawiając właściwość Źródło płytki na tę wybraną w polu listy. Działa dobrze z około 50x50 mapami płytek, ale wszystko powyżej powoduje opóźnienia ładowania, w ogólnie powolnej aplikacji.

Wszelkie sugestie na ten temat? Czy QT może być bardziej odpowiedni zamiast wpf?

góry dzięki

Odpowiedz

6

odjazdu Implementing virtualized panel serii artykułów.

Zwirtualizowane panele są skuteczne, ponieważ:

  • Tylko wyświetlane elementy (i kilka dodatkowych wokół granic, aby umożliwić płynne przewijanie) są w pamięci (i renderowane).

  • Elementy są ponownie wykorzystywane, zamiast wielokrotnego tworzenia i usuwania - stara komórka jest po prostu wypełniona nową treścią (dostarczaną z nowym DataContext) i używana w nowej lokalizacji.

Możesz także spróbować użyć DataFrid WPF do tego, obsługuje wirtualizację po wyjęciu z pudełka i jest zasadniczo to, co próbujesz zrobić.

WPF na pewno będzie w stanie to zrobić, jeśli zostanie poprawnie zaimplementowane (jeśli możesz to zrobić w JavaScript, możesz to zrobić również w WPF).

Powiązane problemy