public PropertiesGraphicsRectangle(GraphicsRectangle rectangle)
        {
            if (rectangle == null)
            {
                throw new ArgumentNullException("rectangle");
            }

            left = rectangle.Left;
            top = rectangle.Top;
            right = rectangle.Right;
            bottom = rectangle.Bottom;

            lineWidth = rectangle.LineWidth;
            objectColor = rectangle.ObjectColor;
            actualScale = rectangle.ActualScale;
            ID = rectangle.Id;
            selected = rectangle.IsSelected;
        }
        public override GraphicsBase CreateGraphics()
        {
            GraphicsBase b = new GraphicsRectangle(left, top, right, bottom, lineWidth, objectColor, actualScale);

            // GraphicsBase contains new ID generated by constructor.
            // This is OK if this instance is loaded from XML file.
            // But if this instance is part of commands history,
            // it contains ID which should be set in GraphicsBase.
            // This rule is applied to all SerializedGraphicsBase-derived
            // classes.

            if (this.ID != 0)       // from command history, not from file
            {
                b.Id = this.ID;
                b.IsSelected = this.selected;
            }

            return b;
        }