znajdziesz wiele powiązanych pytań dotyczących Stack Overflow, jednak nie wszystkie z nich wspominają, że jednym z najbardziej wydajnych sposobów na pobieranie dużych ilości danych na ekran jest użycie interfejsu API WriteableBitmap. Proponuję rzucić okiem na projekt open source na codepleksie WriteableBitmapEx. Ujawnienie, przyczyniłem się do tego jeden raz, ale to nie jest moja biblioteka.
Eksperymentując z DrawingVisual, StreamGeometry, OnRender, Canvas, wszystkie te elementy przewrócą się, gdy będziesz musiał narysować ponad 1000 "obiektów" na ekranie. Istnieją techniki radzenia sobie z wirtualizacją płótna (istnieje "million items demo z wirtualizowanym płótnem"), ale nawet to jest ograniczone do ~ 1000 widocznych w tym samym czasie przed spowolnieniem. WriteableBitmap umożliwia bezpośredni dostęp do bitmapy i rysowanie jej (styl oldskool), co oznacza, że możesz rysować dziesiątki tysięcy obiektów z dużą prędkością. Możesz zaimplementować własne optymalizacje (wielowątkowość, poziom szczegółowości), ale pamiętaj, że dzięki temu API nie uzyskasz zbyt wielu dodatków. Dosłownie robisz to sam.
Jest jednak jedno zastrzeżenie. Podczas gdy WPF używa procesora do tesselation/GPU do renderowania, WriteableBitmap użyje CPU na wszystko. Dlatego stopień wypełnienia (liczba pikseli renderowanych na klatkę) staje się wąskim gardłem w zależności od mocy procesora.
Jeśli to nie pomoże, jeśli naprawdę potrzebujesz renderowania wysokiej wydajności, proponuję przyjrzeć się SharpDX (Managed DirectX) i współdziałaniu z WPF. Zapewni to najwyższą wydajność, ponieważ będzie bezpośrednio korzystać z GPU.
poważaniem,
Brzmi to pokrewnie, ale może nie do końca, co chcesz: [Microsoft Deep Zoom] (http://msdn.microsoft.com/en-us/library/cc645050 (v = vs.95) .aspx) – Ray