public void ProcessMouseMove(MouseEventArgs e)
        {
            var cursor           = Cursors.Default;
            var location         = e.Location;
            var underCursorGlyph = FindGlyphIn(location);

            if (RedactorState == RedactorStates.Default && underCursorGlyph != ActiveGlyph)
            {
                cursor = Cursors.Hand;
            }

            if (ActiveGlyph is PathGlyph || (Mode != RedactorModes.Move && underCursorGlyph == ActiveGlyph))
            {
                cursor = Cursors.Cross;
            }

            if (RedactorState == RedactorStates.Dragging)
            {
                cursor = Cursors.NoMove2D;
            }

            ActiveGlyph.ProcessMove(new Point(location.X - LastCursorLocation.X, location.Y - LastCursorLocation.Y));

            _redactor.Cursor   = cursor;
            LastCursorLocation = location;
        }
        /// <summary>
        /// Обрабатывает левый клик
        /// </summary>
        /// <param name="location"></param>
        private void ProcessLeftClick(Point location)
        {
            if (RedactorState == RedactorStates.Dragging)
            {
                RedactorState = RedactorStates.Default;
                return;
            }

            if (RedactorState == RedactorStates.Default)
            {
                var newActiveGlyph = FindGlyphIn(location);
                if (newActiveGlyph == ActiveGlyph)
                {
                    switch (Mode)
                    {
                    case RedactorModes.Create:
                        StartCreatingNewGlyphIn(location);
                        return;

                    case RedactorModes.Move:
                        StartMoving();
                        return;

                    case RedactorModes.AddPolygon:
                        throw new NotImplementedException();
                    }
                }

                else
                {
                    Focus(newActiveGlyph);
                    if (ActiveGlyph is LineGlyph || ActiveGlyph is WordGlyph)
                    {
                        ActiveGlyph.ProcessSelection();
                    }
                    _redactor.Invalidate();
                }
            }

            if (ActiveGlyph is PathGlyph)
            {
                (ActiveGlyph as PathGlyph).ProcessLeftClick(location);
            }
        }