private void ShowTooltip(Point pt)
        {
            var        tooltip = string.Empty;
            RectangleF rect    = new RectangleF();

            if (StrokeRectangle.Contains(pt))
            {
                tooltip = Resources.StrokeColorToolTip;
                rect    = StrokeRectangle;
            }
            else if (FillRectangle.Contains(pt))
            {
                tooltip = Resources.FillColorToolTip;
                rect    = FillRectangle;
            }
            else if (SwapImageRectangle.Contains(pt))
            {
                tooltip = Resources.SwapColorsToolTip;
                rect    = SwapImageRectangle;
            }
            //Если курсор переместился в другой прямоугольник
            if (!Equals(rect, _prevRect))
            {
                toolTip1.SetToolTip(this, tooltip);
            }
            _prevRect = rect;
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.SmoothingMode = SmoothingMode.HighQuality;

            var rect = FillRectangle.RInflate(-1, -1);

            e.Graphics.FillRectangle(Brushes.White, rect);
            rect.Draw(e.Graphics, Pens.Black);
            e.Graphics.FillRectangle(Fill.Brush(), rect.RInflate(-2, -2));

            rect = StrokeRectangle.RInflate(-1, -1);
            e.Graphics.FillRectangle(Brushes.White, rect);
            rect.Draw(e.Graphics, Pens.Black);
            e.Graphics.FillRectangle(Stroke.Brush(), rect.RInflate(-2, -2));

            e.Graphics.DrawImage(SwapImage, SwapImageRectangle);
        }
        protected override void OnMouseClick(MouseEventArgs e)
        {
            var index = -1;

            //В каком прямоугольнике кликнули
            if (StrokeRectangle.Contains(e.Location))//цвет контура
            {
                index = 1;
            }
            else if (FillRectangle.Contains(e.Location))//цвет фона
            {
                index = 0;
            }
            else if (SwapImageRectangle.Contains(e.Location))//поменять цвета
            {
                SwapColors();
                return;
            }
            if (index == -1)
            {
                return;
            }
            using (var dialog = new ColorDialog())
            {
                dialog.Color          = index == 0 ? Fill : Stroke;
                dialog.SolidColorOnly = false;
                if (dialog.ShowDialog(this) != DialogResult.OK)
                {
                    return;
                }
                switch (index)
                {
                case 0:
                    Fill = dialog.Color;
                    break;

                case 1:
                    Stroke = dialog.Color;
                    break;
                }
            }
        }