コード例 #1
0
        // ドラッグ中の処理
        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;
            }
        }
コード例 #2
0
        // ドラッグ中の処理
        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;
            }
        }