コード例 #1
0
        private void SurfaceMouseMove(object sender, MouseEventArgs e)
        {
            bool clickable = selectedElements.ClickableAt(e.X, e.Y);

            if (DrawingMode == DrawingModes.None && !clickable)
            {
                Cursor = Cursors.Default;
            }
            else if ((!mouseDown && clickable) || (mouseDown && mouseDownElement != null))
            {
                Cursor = Cursors.SizeAll;
            }
            else
            {
                Cursor = Cursors.Cross;
            }

            if (mouseDown)
            {
                if (mouseDownElement != null) // an element is currently dragged
                {
                    selectedElements.HideGrippers();
                    if (mouseDownElement.Selected) // dragged element has been selected before -> move all
                    {
                        selectedElements.MoveBy(e.X - mX, e.Y - mY);
                    }
                    else // dragged element is not among selected elements -> just move dragged one
                    {
                        mouseDownElement.MoveBy(e.X - mX, e.Y - mY);
                    }
                    mX = e.X; mY = e.Y;
                    Invalidate();
                }
                else if (drawingElement != null) // an element is currently drawn
                {
                    drawingElement.Width  = e.X - drawingElement.Left;
                    drawingElement.Height = e.Y - drawingElement.Top;
                    Invalidate();
                }
            }
        }