Devo disegnare un sacco di Shape (circa 1/2 centinaia di migliaia) come bambini [Canvas] [2]. Lo faccio nella mia applicazione WPF dividendo il lavoro in due parti: per prima cosa creo le forme impostando le proprietà di ciascuna di esse (come Margine, Riempimento, Larghezza, ecc.), Dopo aver aggiunto forme come i figli di Canvas.Come migliorare le prestazioni di rendering della tela?
MyCanvas.Children.Add(MyShape)
ora voglio migliorare le prestazioni della seconda parte, perché quando disegno le forme la mia domanda è bloccato per un lungo periodo di tempo. Così ho provato a usare lo Dispatcher e il suo metodo [BeginInvoke] [4] con diverse [priorità] [5]: solo se uso la priorità Sfondo l'applicazione principale non si blocca, altrimenti l'applicazione rimane bloccata e la "immagine" è non viene visualizzato finché tutte le forme non sono state aggiunte alla tela, ma se utilizzo la priorità Sfondo ovviamente tutto è più lento. Ho anche provato a creare un nuovo thread invece di usare Dispatcher, ma non ci sono stati cambiamenti significativi.
Come posso risolvere questo problema e, in generale, migliorare le prestazioni della mia applicazione quando aggiungo le mie forme a Canvas?
Grazie.
Hai provato DrawingVisual? –
No. Potresti darmi un esempio di come usare DrawingVisual invece di una Shape come Ellisse o Path. Ad esempio, come posso aggiungere al percorso Canvas [this] (http://msdn.microsoft.com/en-us/library/ms745546.aspx) Path using DrawingVisual? – gliderkite
Sì, ci sono alcune ottime informazioni su google. Ecco un link per iniziare: http://msdn.microsoft.com/en-us/magazine/dd483292.aspx –