/// <summary>Called when the mouse position is updated</summary> /// <param name="x">X coordinate of the mouse cursor on the GUI</param> /// <param name="y">Y coordinate of the mouse cursor on the GUI</param> protected override void OnMouseMoved(float x, float y) { base.OnMouseMoved(x, y); if (_beingResized) { ResizeTo(x, y); } else { // Remember the current mouse position so we know where the user picked // up the control when a drag operation begins _grabX = x; _grabY = y; } if (IsMouseOnBorder(x, y) && !_beingResized && _enableResizing) { SetResizingDirection(); } else if (_resizingSides != ResizingSides.None && !_beingResized) { _resizingSides = ResizingSides.None; SetCursorForResize(_resizingSides); } }
private void SetResizingDirection() { var _oldResizingSides = _resizingSides; _resizingDirections = ResizingDirections.None; _resizingSides = ResizingSides.None; if (_grabX >= GetAbsoluteBounds().Size.Width - _borderThickness) { _resizingDirections |= ResizingDirections.Horizontal; _resizingSides |= ResizingSides.Right; } if (_grabX <= _borderThickness) { _resizingDirections |= ResizingDirections.Horizontal; _resizingSides |= ResizingSides.Left; } if (_grabY >= GetAbsoluteBounds().Size.Height - _borderThickness) { _resizingDirections |= ResizingDirections.Vertical; _resizingSides |= ResizingSides.Bottom; } if (_grabY <= _borderThickness) { _resizingDirections |= ResizingDirections.Vertical; _resizingSides |= ResizingSides.Top; } if (_oldResizingSides != _resizingSides) { SetCursorForResize(_resizingSides); } }
protected override void OnMouseLeft(float x, float y) { if (_beingResized) { ResizeTo(x, y); } else { base.OnMouseLeft(x, y); _resizingSides = ResizingSides.None; SetCursorForResize(_resizingSides); } }
public virtual void SetCursorForResize(ResizingSides resizingSides) { //No Default behavior }