/// <summary>
 /// The only constructor requires that you provide the number
 /// of parts in this feature so that the first dimention of 
 /// the array can be created.
 /// </summary>
 /// @param numOfParts the number of sub-features in this feature
 /// @param mapMetrics the GIS.MapMetrics object for this map
 public VectorFeature( int numOfParts, MapMetrics mapMetrics )
 {
     if ( numOfParts == 1094233352 )
     {
         numOfParts = 5;
     }
     _segment		= new PointD[ numOfParts ][];
     _mapMetrics		= mapMetrics;
     _extents		= new RectangleD();
     _segmentCounter = 0;
     _featureAngle	= 0;
 }
        public ScaleBar( MapMetrics metrics )
        {
            Graphics gr = Graphics.FromImage( metrics.Canvas );
            int dpi = (int) gr.DpiX;
            double x1 = 0.0;
            double y1 = 0.0;
            double x2 = dpi;
            double y2 = 0.0;

            metrics.Pixel2World( ref x1, ref y1 );
            metrics.Pixel2World( ref x2, ref y2 );

            double distance = x2 - x1;

            Pen p = new Pen( Color.Chartreuse, 4 );

            int scaleBarLeft = metrics.Canvas.Width - ( dpi + 20 );
            int scaleBarRight = metrics.Canvas.Width - 20;
            int scaleBarTop = metrics.Canvas.Height - 35;
            int scaleBarBottom = metrics.Canvas.Height - 15;

            gr.DrawLine( p, new Point( scaleBarLeft, scaleBarBottom ),
                new Point( scaleBarRight, scaleBarBottom ) );

            p = new Pen( Color.Chartreuse, 1 );

            gr.DrawLine( p, new Point( scaleBarLeft, scaleBarBottom - 10 ),
                new Point( scaleBarLeft, scaleBarBottom ) );
            gr.DrawLine( p, new Point( scaleBarRight, scaleBarBottom - 10 ),
                new Point( scaleBarRight, scaleBarBottom ) );

            gr.DrawString( "1:" + distance.ToString("F4"), new Font("Arial", 8),
                new SolidBrush( Color.Chartreuse ), scaleBarLeft+25, scaleBarTop+5 );

            gr.Dispose();
        }