Wie verbessern Canvas-rendering-performance?

Ich haben, ziehen eine Menge Form (etwa 1/2 hundert tausend) [Leinwand][2]'s Kinder. Ich mache das in meiner WPF-Anwendung, die das teilen der Arbeit in zwei Teile: das erste, was ich Formen, indem Sie die Eigenschaften von jedem von Ihnen (wie Rand, Füllung, Breite, etc...) habe ich nach dem hinzufügen von Formen, wie Leinwand Kinder.

MyCanvas.Children.Add(MyShape)

Nun möchte ich zur Verbesserung der Leistung des zweiten Teils, denn wenn ich zeichne die Formen, die meine Anwendung blockiert wird für eine lange Zeit. Also ich habe versucht, die Dispatcher und seine Methode [BeginInvoke][4] mit anderen [Prioritäten][5]: nur, wenn ich den Hintergrund-Priorität, die die Hauptanwendung nicht zu blockieren, da sonst die Anwendung blockiert bleibt und die "Bild" wird nicht angezeigt, bis alle Formen werden Hinzugefügt, um meine Leinwand, aber wenn ich die Hintergrund-vorrangig natürlich alles, was langsamer ist. Ich habe auch versucht ein neues Thema erstellen, anstatt die Dispatcher, aber es wurde keine signifikante Veränderung.

Wie kann ich dieses problem beheben und verbessern allgemein die performance meiner Anwendung, wenn ich meine Formen auf die Leinwand?

Dank.

Haben Sie versucht, DrawingVisual?
Nein. Könnten Sie mir ein Beispiel für die Verwendung von DrawingVisual statt einer Form wie Ellipse oder Pfad. Zum Beispiel, wie kann ich auf meine Leinwand dieser Weg mit DrawingVisual?
Ja, es gibt einige große Informationen über google. Hier ist ein link zum Einstieg: msdn.microsoft.com/en-us/magazine/dd483292.aspx
Dies ist ein einfacher Beispiel, aber die, die sich auf hit-testing und nicht erklären, warum so gut wie die vorherigen link. msdn.microsoft.com/en-us/library/ms771684.aspx
Ich lese den ersten Artikel, aber ich sah auf der MSDN-Bibliothek, die DrawingVisual keine Veranstaltung handlig! Muss ich die Interaktion mit meinen Formen, ist es sehr wichtig, zu Fang die Maus-Ereignisse für mich.

InformationsquelleAutor gliderkite | 2012-04-03

Schreibe einen Kommentar