private void StartResizing(SelectionArea area, SelectionArea.ResizeSide side) { _currentEditMode = EditMode.RESIZING; _activeResizeArea = area; _activeResizeAreaSide = side; _activeResizeAreaXbeforeStart = area.OffsetX; _activeResizeAreaYbeforeStart = area.OffsetY; _activeResizeAreaWidthbeforeStart = area.AreaWidth; _activeResizeAreaHeightbeforeStart = area.AreaHeight; switch (side) { case SelectionArea.ResizeSide.LEFT: drawCanvas.Cursor = Cursors.SizeWE; break; case SelectionArea.ResizeSide.TOP: drawCanvas.Cursor = Cursors.SizeNS; break; case SelectionArea.ResizeSide.RIGHT: drawCanvas.Cursor = Cursors.SizeWE; break; case SelectionArea.ResizeSide.BOTTOM: drawCanvas.Cursor = Cursors.SizeNS; break; } }
private void UpdateResizeArea(Point currentMousePoint) { Point currentMousePointTransformed = _activeResizeArea.AreaCanvas.PointFromScreen(currentMousePoint); Point mouseDownPointTransformed = _activeResizeArea.AreaCanvas.PointFromScreen(_mouseDownPoint); double deltaX = currentMousePointTransformed.X - mouseDownPointTransformed.X; double deltaY = currentMousePointTransformed.Y - mouseDownPointTransformed.Y; switch (_activeResizeAreaSide) { case SelectionArea.ResizeSide.LEFT: _activeResizeArea.OffsetX = _activeResizeAreaXbeforeStart + deltaX; _activeResizeArea.AreaWidth = _activeResizeAreaWidthbeforeStart - deltaX; break; case SelectionArea.ResizeSide.TOP: _activeResizeArea.OffsetY = _activeResizeAreaYbeforeStart + deltaY; _activeResizeArea.AreaHeight = _activeResizeAreaHeightbeforeStart - deltaY; break; case SelectionArea.ResizeSide.RIGHT: _activeResizeArea.AreaWidth = _activeResizeAreaWidthbeforeStart + deltaX; break; case SelectionArea.ResizeSide.BOTTOM: _activeResizeArea.AreaHeight = _activeResizeAreaHeightbeforeStart + deltaY; break; } if (_activeResizeArea.OffsetX > _activeResizeAreaXbeforeStart + _activeResizeAreaWidthbeforeStart) { _activeResizeAreaSide = SelectionArea.ResizeSide.RIGHT; } if (_activeResizeArea.OffsetY > _activeResizeAreaYbeforeStart + _activeResizeAreaHeightbeforeStart) { _activeResizeAreaSide = SelectionArea.ResizeSide.BOTTOM; } if (_activeResizeArea.AreaWidth < 0) { _activeResizeAreaSide = SelectionArea.ResizeSide.LEFT; } if (_activeResizeArea.AreaHeight < 0) { _activeResizeAreaSide = SelectionArea.ResizeSide.TOP; } }
private void drawCanvas_MouseUp(object sender, MouseButtonEventArgs e) { _isMouseDown = false; drawCanvas.Cursor = Cursors.Pen; if (_currentEditMode == EditMode.INSERTING) { _activeInsertArea = null; } else if (_currentEditMode == EditMode.RESIZING) { _activeResizeArea = null; _activeResizeAreaSide = SelectionArea.ResizeSide.NONE; _currentEditMode = EditMode.INSERTING; } else if (_currentEditMode == EditMode.ROTATING) { _activeRotateArea = null; _currentEditMode = EditMode.INSERTING; } }