private void MouseMoveMethod(FrameworkElement element, Point currentPosition) { double scale = 1; if (element.IsActivity()) { scale = ((ScaleResizingAdorner)elements[element]).Scale; } double left = (currentPosition.X - clickPoint.X * scale); double top = (currentPosition.Y - clickPoint.Y * scale); left = Math.Max(left, 0); top = Math.Max(top, 0); Canvas.SetLeft(element, left); Canvas.SetTop(element, top); }
/// <summary> /// Add an element /// </summary> /// <param name="element"></param> public void AddWidget(FrameworkElement element) { element.Cursor = Cursors.SizeAll; element.AddHandler(FrameworkElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(MouseLeftButtonDown), true); element.AddHandler(FrameworkElement.MouseLeftButtonUpEvent, new MouseButtonEventHandler(MouseLeftButtonUp), true); element.AddHandler(FrameworkElement.MouseMoveEvent, new MouseEventHandler(MouseMove), true); ResizingAdorner adorner = element.IsActivity() ? new ScaleResizingAdorner(element) : new ResizingAdorner(element); adorner.WidgetDragging += OnWidgetDragging; adornerLayer.Add(adorner); elements.Add(element, adorner); ElementsRightBottom.Add(element, new Point()); // element may has not loaded }
private void MouseLeftButtonUpMethod(FrameworkElement element) { element.ReleaseMouseCapture(); isMouseCaptured = false; double scale = 1; if (element.IsActivity()) { scale = ((ScaleResizingAdorner)elements[element]).Scale; } OnWidgetDragging(element, new WidgetDraggingEventArgs(new Point( Canvas.GetLeft(element) + element.ActualWidth * scale, Canvas.GetTop(element) + element.ActualHeight * scale))); }