Пример #1
0
        public void ZoomToFit(double margin = 10)
        {
            var selectedNodes = SelectedModels.Where(s => s is NodeModel).Select(s => (NodeModel)s).ToList();

            if (selectedNodes.Count == 0 && _nodes.Count == 0)
            {
                return;
            }

            (var minX, var maxX, var minY, var maxY) = GetNodesRect(selectedNodes);
            var width  = maxX - minX + 2 * margin;
            var height = maxY - minY + 2 * margin;

            minX -= margin;
            minY -= margin;

            var xf = Container.Width / width;
            var yf = Container.Height / height;

            Zoom = Math.Min(xf, yf);

            var nx = Container.Left + Pan.X + minX * Zoom;
            var ny = Container.Top + Pan.Y + minY * Zoom;

            Pan = Pan.Add(Container.Left - nx, Container.Top - ny);

            Refresh();
        }
Пример #2
0
 public void UpdatePan(double deltaX, double deltaY)
 {
     Pan = Pan.Add(deltaX, deltaY);
     PanChanged?.Invoke();
     Refresh();
 }