/// <summary>
        /// Highlight a geographic object.
        /// </summary>
        /// @param record_number Array index of the record to be highlighted.
        /// @param c The color to use to highlight the record.
        private void Highlight(int record_number, Color c)
        {
            RenderThread drawThread;
            Pen tempPen = (Pen) _pen.Clone();
            tempPen.Color = c;

            if ( _ShapeType == ShapeType.Line )
            {
                tempPen.Width += 2;
                tempPen.StartCap = LineCap.RoundAnchor;
                tempPen.EndCap = LineCap.RoundAnchor;
            }

            HatchBrush tempBrush = new HatchBrush( HatchStyle.Percent70, c, Color.Transparent );

            drawThread = new RenderThread( _mapMetrics, _features,
                _ShapeType, record_number, record_number + 1, tempPen, tempBrush );

            drawThread.Start();

            tempPen.Dispose();
            tempBrush.Dispose();
        }
        /// <summary>
        /// Calculates how many features each RenderThread will draw. Then each
        /// rendering thread is started and we wait for all of the threads to finish 
        /// before continuing on.
        /// </summary>
        public void Draw()
        {
            GenerateDrawList();

            for ( int a=0; a<NUM_THREADS; ++a )
            {
                if ( a == NUM_THREADS - 1 )
                {
                    drawThreads[ a ] = new RenderThread( _mapMetrics, _features,
                        _ShapeType, a * threadBoundary, _features.Length, _pen, _brush );
                }
                else
                {
                    drawThreads[ a ] = new RenderThread( _mapMetrics, _features,
                        _ShapeType, a * threadBoundary, (a + 1) * threadBoundary, _pen, _brush );
                }

                threads[ a ] = new Thread( new ThreadStart( drawThreads[a].Start ) );
                threads[ a ].Start();
            }

            for ( int b=0; b<NUM_THREADS; ++b )
            {
                threads[b].Join();
            }

            // if a feature has been highlighted with a query

            if ( _highlightedFeature != -1 )
            {
                this.Highlight( _highlightedFeature, SystemColors.Highlight );
            }
        }