//=============================================================================
        protected override void OnRender(DrawingContext drawingContext)
        {
            if (drawingContext == null)
            {
                return;
            }

            DrawingSheet sheet = this.Sheet;

            if (sheet == null)
            {
                return;
            }

            // STEP 1.
            // Draw sheet content with opacity.
            drawingContext.PushOpacity(0.2);
            //
            int LengthInPixels = Utils.GetWholeNumber(this.ActualWidth);            //Utils.GetWholeNumber(cs.GetWidthInPixels(DrawingGlobalSize.Width, Length_X));
            int HeightInPixels = Utils.GetWholeNumber(this.ActualHeight);           //Utils.GetWholeNumber(cs.GetHeightInPixels(DrawingGlobalSize.Height, Length_Y));
            //
            ImageCoordinateSystem      ics = new ImageCoordinateSystem(LengthInPixels, HeightInPixels, new Vector(0.0, 0.0), new Size(sheet.Length, sheet.Width), 0.0);
            DefaultGeomDisplaySettings geomDisplaySettings = new DefaultGeomDisplaySettings();

            geomDisplaySettings.DisplayText = false;

            //
            if (sheet.Rectangles != null)
            {
                foreach (BaseRectangleGeometry geom in sheet.Rectangles)
                {
                    if (geom == null)
                    {
                        continue;
                    }

                    // Dont display SheetElevationGeometry, because it has fixed size in pixels
                    if (geom is SheetElevationGeometry)
                    {
                        continue;
                    }

                    geom.Draw(drawingContext, ics, geomDisplaySettings);
                }
            }
            // Pop opacity
            drawingContext.Pop();

            // STEP 2.
            // Draw gray sheet border.
            Size  drawingSize = new Size(sheet.Length, sheet.Width);
            Point pt_01       = ics.GetLocalPoint(new Point(0.0, 0.0), sheet.UnitsPerCameraPixel, sheet.GetCameraOffset());
            Point pt_02       = ics.GetLocalPoint(new Point(sheet.Length, sheet.Width), sheet.UnitsPerCameraPixel, sheet.GetCameraOffset());

            drawingContext.DrawRectangle(null, new Pen(Brushes.Gray, 1.0), new Rect(pt_01, pt_02));
        }