private void MainCanvas_MouseRightButtonDown(object sender, MouseButtonEventArgs e) { currentAction = Actions.rotating; if (SelectedImage == null) { var image = e.Source as Image; if (image == baseImage) { return; } SelectedImage = image; } if (MainCanvas.CaptureMouse()) { initialClickPosition.X = Canvas.GetLeft(SelectedImage) + SelectedImage.ActualWidth / 2;; initialClickPosition.Y = Canvas.GetTop(SelectedImage) + SelectedImage.ActualHeight / 2;; rotateLine.X1 = initialClickPosition.X; rotateLine.Y1 = initialClickPosition.Y; rotateLine.X2 = e.GetPosition(MainCanvas).X; rotateLine.Y2 = e.GetPosition(MainCanvas).Y; oldAngle = Math2D.AngleBetween(new Vector(1, 0), new Vector(rotateLine.X2 - rotateLine.X1, rotateLine.Y2 - rotateLine.Y1)); Panel.SetZIndex(SelectedImage, 2); } }
private void MainCanvas_MouseMove(object sender, MouseEventArgs e) { if (currentAction == Actions.dragging) { var position = e.GetPosition(MainCanvas); var offset = position - initialClickPosition; initialClickPosition = position; Canvas.SetLeft(SelectedImage, Canvas.GetLeft(SelectedImage) + offset.X); Canvas.SetTop(SelectedImage, Canvas.GetTop(SelectedImage) + offset.Y); } else if (currentAction == Actions.rotating) { var position = e.GetPosition(MainCanvas); var angle = Math2D.AngleBetween(new Vector(1, 0), new Vector(rotateLine.X2 - rotateLine.X1, rotateLine.Y2 - rotateLine.Y1)); if (angle != 0) { var offset = angle - oldAngle; oldAngle = angle; rotateLine.X2 = position.X; rotateLine.Y2 = position.Y; Fixtures.FindByImage(SelectedImage).Rotate(offset); } } }