<p>The project I'm working on needs to render an ESRI shape file, which can have a large number of polygons/shapes.  When I add all these polygons, lines, points, etc to the canvas I'm using, it gets really slow.</p>

<p>To draw the shapes on the map, I'm creating a Path object, and setting it's Data property to a StreamGeometry.  I originally used a Polygon, but according to MSDN a StreamGeometry is much lighter weight.</p>

<p>How can I improve the performance?  Would converting the finished product to a Bitmap, or VisualBrush help?  Is there a more efficient way of to render all these shapes onto the canvas?</p>

<p>EDIT:  I forgot to mention that this needs to be able to work in a Partial-Trust XBAP.</p>

You are about to discover the motivation behind GPUs and insanely overclocked and cooled-down graphics cards. And double-buffering.
And: converting the thing to a bitmap: what's the difference to rendering it?
After all you have n objects that /somehow/ have to get rendered (unless you can figure out which objects are hidden behind other objects but that doesn't help you much since you'd have to look at n! object relations).
Besides: maybe it pays off to leave the orthodox OOP approach and go procedural instead.