ThinkGeo.com    |     Documentation    |     Premium Support

Default PointStyle Rendering is slow. Found a solution

Hi,


My maps typically have tens of thousands of point features.  It was taking about 1 second to render the layer containing these features using the PointStyle along with the PointSymbolType.  We noticed that using the Cross symbol type made the performance even worse.


Instead of using these slow PointStyles, we switched to dynamically creating our own bitmaps in a cache, and then drew the same bitmap instance to multiple locations in the map.  Our rendering time went from 1 second down to 0.2 seconds.


Is there an option to make the default PointStyles render in this mode?  Perhaps you change the "DrawCore" function that takes a list of features, to first render to an in-memory bitmap, and then paint that bitmap to the various feature locations.  Am I missing something here?


-Greg


 



Greg,


Thanks for your post.




I need to ask your some questions to confirm your problem.

Where is the posts from? Shape Files or InMemoryLayer or something else? And how do you calculate the draw time? Do you override the base DrawCore method of PointStyle and add stopwatch here, like following code:


    class MyPointStyle : PointStyle
    {
        protected override void DrawCore(System.Collections.Generic.IEnumerable<Feature> features, GeoCanvas canvas, Collection<SimpleCandidate> labelsInThisLayer, Collection<SimpleCandidate> labelsInAllLayers)
        {
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            base.DrawCore(features, canvas, labelsInThisLayer, labelsInAllLayers);
            stopwatch.Stop();
            Debug.WriteLine("Drawing time:"+ stopwatch.ElapsedMilliseconds);
        }   
    }

Could you provide a simaple sample to show this problem?


Thanks

James