/// <summary>
        /// Handle mouse moves
        /// </summary>
        public override bool OnMouseMove(VCItem sender, ItemMouseEventArgs e)
        {
            var location = ZoomLayer.Local2Global(e.Location);

            if (zooming)
            {
                ZoomLayer.ZoomFactor = GetZoomFactor(zoomArea, location);
                return(true);
            }

            ContainsMouse = zoomArea.Contains(location);
            return(base.OnMouseMove(sender, e));
        }
        /// <summary>
        /// Mouse button up
        /// </summary>
        public override bool OnMouseUp(VCItem sender, ItemMouseEventArgs e)
        {
            if (zooming)
            {
                zooming = false;
                var location = ZoomLayer.Local2Global(e.Location);
                ContainsMouse = zoomArea.Contains(location);
                ZoomLayer.Invalidate();
                return(true);
            }

            return(base.OnMouseUp(sender, e));
        }
        /// <summary>
        /// Pass mouse down to appropriate item
        /// </summary>
        public override bool OnMouseDown(VCItem sender, ItemMouseEventArgs e)
        {
            var location = ZoomLayer.Local2Global(e.Location);

            if ((e.Button == MouseButtons.Left) && (zoomArea.Contains(location)))
            {
                zooming              = true;
                ContainsMouse        = true;
                ZoomLayer.ZoomFactor = GetZoomFactor(zoomArea, location);
                return(true);
            }
            return(base.OnMouseDown(sender, e));
        }