Esempio n. 1
0
        // コンストラクタ / ドラッグ開始
        public NodeDragController(NodeDragControllerSetupArgs setupArgs)
        {
            if (setupArgs.Args.LeftButton == MouseButtonState.Pressed)
            {
                _isDrag = true;

                _dragStartPos   = setupArgs.Args.GetPosition(setupArgs.BaseControl);
                _originalPoints = setupArgs.Nodes.ToDictionary(x => x, x => new Point(x.X, x.Y));
            }

            _completedNodeMove = setupArgs.CompletedCommand;
            _selectedNodes     = setupArgs.Nodes;
            _useSnapGrid       = setupArgs.UseSnapGrid;
            _inputElement      = setupArgs.BaseControl;
            _gridSize          = setupArgs.GridSize;
            if (_selectedNodes.Any())
            {
                var control = _selectedNodes.First().FindVisualParentWithType <InfiniteScrollViewer>();
                if (Mouse.Captured == null)
                {
                    _isCaptured = _inputElement.CaptureMouse();
                }
                _scrollViewer = control;
            }
        }
Esempio n. 2
0
        private void update_thumb(Thumb thumb, InfiniteScrollViewer scrollViewer)
        {
            var rect  = NetworkView.ItemsRect.ValidateRect(ActualWidth, ActualHeight).ToOffset(scrollViewer.ViewRectOffset);
            var point = scrollViewer.TransformPoint(0, 0);

            Canvas.SetLeft(thumb, point.X / (rect.Width / MiniMap.Width));
            Canvas.SetTop(thumb, point.Y / (rect.Height / MiniMap.Height));
        }
Esempio n. 3
0
 //! 最低限の引数はコンストラクタでセットアップする必要がある
 public NodeDragControllerSetupArgs(IInputElement baseControl,
                                    INodeControl[] nodes,
                                    ICommand completedCommand         = null,
                                    InfiniteScrollViewer scrollViewer = null)
 {
     BaseControl          = baseControl;
     Nodes                = nodes;
     CompletedCommand     = completedCommand;
     InfiniteScrollViewer = scrollViewer;
 }
Esempio n. 4
0
        // コンストラクタ / ドラッグ開始
        public NodesDragController(NodeDragControllerSetupArgs setupArgs)
        {
            _originalPoints = setupArgs.Nodes.ToDictionary(x => x, x => new Point(x.X, x.Y));

            _completedNodeMove = setupArgs.CompletedCommand;
            _selectedNodes     = setupArgs.Nodes.Where(x => x.CanMovable).ToArray();
            _useSnapGrid       = setupArgs.UseSnapGrid;
            _gridSize          = setupArgs.GridSize;
            _inputElement      = setupArgs.BaseControl;
            _scrollViewer      = setupArgs.InfiniteScrollViewer;
        }
        public static void Scale(this InfiniteScrollViewer self, double scale, double centerX, double centerY)
        {
            var d0 = self.TransformPoint(centerX, centerY);

            self.ScaleMatrix.ScaleX = scale;
            self.ScaleMatrix.ScaleY = scale;

            var d1 = self.TransformPoint(centerX, centerY);

            var diff = d1 - d0;

            self.TranslateMatrix.X += diff.X * scale;
            self.TranslateMatrix.Y += diff.Y * scale;
        }
Esempio n. 6
0
 public ViewportDrag(NetworkView networkView, MouseEventArgs mouseEventArgs)
 {
     PrevPosition  = mouseEventArgs.GetPosition(networkView);
     NetworkView   = networkView;
     _scrollViewer = NetworkView.FindChild <InfiniteScrollViewer>(x => true);
 }
 public ViewportDragController(NetworkView networkView)
 {
     NetworkView   = networkView;
     _scrollViewer = NetworkView.FindChild <InfiniteScrollViewer>(x => true);
 }
 public static Point TransformPoint(this InfiniteScrollViewer self, double x, double y)
 {
     return(new Point(
                (x - self.TranslateMatrix.X) / self.ScaleMatrix.ScaleX,
                (y - self.TranslateMatrix.Y) / self.ScaleMatrix.ScaleY));
 }