// ドラッグ中の処理 public void OnDragMoving(DragControllerEventArgs args) { if (_isDrag is false) { return; } // ボタンが離れた場合はキャンセルとみなす if (args.Button != MouseButton.Left) { Cancel(); return; } _isMoved = true; foreach (var item in _selectedNodes) { // ドラッグ開始前 + 移動量でノード位置を計算する var x = (int)(_originalPoints[item].X + args.Vector.X); var y = (int)(_originalPoints[item].Y + args.Vector.Y); //! スナップグリッドする場合は再計算 var point = _useSnapGrid ? gird_snap(x, y, 4) : new Point(x, y); item.X = point.X; item.Y = point.Y; } if (IsMouseOutScrollViewer()) { DragScrollOffset(); _scrollViewer.UpdateScrollBar(); return; } }
// ドラッグ中の処理 public void OnDrag(object sender, MouseEventArgs args) { if (_isDrag is false) { return; } // ボタンが離れた場合はキャンセルとみなす if (args.LeftButton != MouseButtonState.Pressed) { Cancel(); return; } var currentPos = args.GetPosition(_inputElement); var xDelta = currentPos.X - _dragStartPos.X; var yDelta = currentPos.Y - _dragStartPos.Y; _isMoved = true; foreach (var item in _selectedNodes) { // ドラッグ開始前 + 移動量でノード位置を計算する var x = (int)(_originalPoints[item].X + xDelta); var y = (int)(_originalPoints[item].Y + yDelta); //! スナップグリッドする場合は再計算 var point = _useSnapGrid ? gird_snap(x, y, 4) : new Point(x, y); item.X = point.X; item.Y = point.Y; } if (IsMouseOutScrollViewer()) { DragScrollOffset(); _scrollViewer.UpdateScrollBar(); return; } }