We are still a little disappointed at the rendering performance of MapSuite, compared to what we got with our own routines drawing using GDI+. Currently, we're drawing with a statement like:
canvas.DrawEllipse(shape, r, r, ((
PenAndBrush)m.Tag).Brush, DrawingLevel.LevelOne);
Where PenAndBrush is an object that holds a reference to a GeoBrush and GeoPen object, and "m" is the object that we have discovered containing the correct styles for the value of the object being drawn.
Keep in mind we are executing this line about 20,000 times. My total loop is taking 8 seconds, with 7 of it being spent in the canvas.DrawEllipse statement. My old program, doing this same general logic, but drawing directly with GDI+ into a bitmap takes just over 2 seconds.
I recognize that recasting the Tag property to a PenAndBrush might be expensive, and I'm preparing to fix that. But I'm also wondering about your use of the GeoBrush. For each call, do you internally create a GDI Brush from your GeoBrush and destroy it? Or do you instantiate a GDI brush one time, and use it for each call to the Canvas.Draw* function?
I'm wondering if I should revert to drawing these sites directly onto a bitmap, and then painting the bitmap into the GeoCanvas?
Are my questions clear as mud? I guess I'm just trying to get a handle on what's going on inside your drawing routines that might be low-hanging fruit that could be picked off on a task like this.