public override void _presenter_MouseMove(object sender, System.Windows.Input.MouseEventArgs e) { if (pressedMouseLeftButtonDown) { if (_startPoint != null) { current = e.GetPosition(_inkCanvas); switch (MoveOrZoom) { case "Move": double offsetx = current.X - _prepoint.X; double offsety = current.Y - _prepoint.Y; _inkCollector.IsAutoMove = true; //移动Mybutton foreach (MyButton myButton in _inkCollector.SelectButtons) { myButton.InkFrame._inkCanvas.CaptureMouse(); ButtonMoveCommand bmc = new ButtonMoveCommand(myButton, offsetx, offsety, _inkCollector); bmc.execute(); } //移动MyImage foreach (MyImage image in _inkCollector.SelectedImages) { ImageMoveCommand imc = new ImageMoveCommand(image, offsetx, offsety); imc.execute(); image.adjustBound(); foreach (ImageConnector connector in image.ConnectorCollection) { connector.adjustConnector(); } } //移动笔迹 if (_inkCollector.SelectedStrokes.Count > 0) { foreach (MyStroke myStroke in _inkCollector.SelectedStrokes) { MoveCommand mc = new MoveCommand(myStroke, offsetx, offsety); mc.execute(); } } //移动图形 if (SelectedMyGraphics.Count > 0) { MyGraphicsMoveCommand mgsmc = new MyGraphicsMoveCommand(SelectedMyGraphics, offsetx, offsety, _inkCollector); mgsmc.execute(); } //移动文本 foreach (MyRichTextBox myRichTextBox in _inkCollector.SelectedMyRichTextBoxs) { Command tmc = new TextMoveCommand(myRichTextBox, offsetx, offsety); tmc.execute(); } break; case "Zoom": _inkCollector.IsAutoMove = false; StylusPoint curr = new StylusPoint(current.X, current.Y); StylusPoint pre = new StylusPoint(_prepoint.X, _prepoint.Y); foreach (MyButton myButton in _inkCollector.SelectButtons) { double dist1 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getMyButtonCenter(myButton), curr); double dist2 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getMyButtonCenter(myButton), pre); if (dist2 == 0) { dist2 = 1; } double scaling = dist1 / dist2; ButtonZoomCommand bmc = new ButtonZoomCommand(myButton, scaling, _inkCollector, myButton.Angle); bmc.execute(); } foreach (MyImage image in _inkCollector.SelectedImages) { double dist1 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getImageCenter(image), curr); double dist2 = MathTool.getInstance().distanceP2P(MathTool.getInstance().getImageCenter(image), pre); if (dist2 == 0) { dist2 = 1; } double scaling = dist1 / dist2; ImageZoomCommand izc = new ImageZoomCommand(image, scaling); izc.execute(); image.adjustBound(); foreach (ImageConnector connector in image.ConnectorCollection) { connector.adjustConnector(); } } break; } _prepoint = current; } } }