protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); var pos = MouseUtils.GetCursorPos(); if (_isMouseDown && Cursor == Cursors.SizeAll) { Left += (pos.X - _mouseOldPos.X); Top += (pos.Y - _mouseOldPos.Y); _mouseOldPos = MouseUtils.GetCursorPos(); return; } else if (_isMouseDown && (Cursor == Cursors.SizeNWSE || Cursor == Cursors.SizeNESW)) { ChangeCtrlSizeAndPos(_mouseOldPos, pos, _resizePos); _mouseOldPos = MouseUtils.GetCursorPos(); return; } var localPos = PointToClient(pos); if (CornerRegionList[1].Contains(localPos) || CornerRegionList[2].Contains(localPos)) { Cursor = Cursors.SizeNESW; } else if (CornerRegionList[0].Contains(localPos) || CornerRegionList[3].Contains(localPos)) { Cursor = Cursors.SizeNWSE; } else { Cursor = Cursors.Default; } }
protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); _isMouseDown = true; _mouseOldPos = MouseUtils.GetCursorPos(); if (Cursor != Cursors.SizeNWSE && Cursor != Cursors.SizeNESW) { this.Cursor = Cursors.SizeAll; } var ctrlPos = PointToClient(_mouseOldPos); _resizePos = CornerRegionList.FindIndex(c => c.Contains(ctrlPos)); Debug.WriteLine($"_resizePos = {_resizePos}"); }