public void ZoomToFitAll() { this.EnsureValidContentBounds(); Rect documentBounds = this.DocumentBounds; documentBounds.Union(this.ContentBounds); if (this.AnnotationLayer.IsVisible) { foreach (UIElement uiElement in this.annotationLayer.Children) { documentBounds.Union((Point)VisualTreeHelper.GetOffset((Visual)uiElement)); } } foreach (Artboard.ExtraLayer extraLayer in this.extraLayers) { if (ArtboardExtraLayerOptionsExtensions.IsSet(extraLayer.Options, ArtboardExtraLayerOptions.IncludeBoundsInZoomToFitAll) && extraLayer.Layer.IsVisible) { Rect descendantBounds = VisualTreeHelper.GetDescendantBounds((Visual)extraLayer.Layer); if (!descendantBounds.IsEmpty && ArtboardExtraLayerOptionsExtensions.IsSet(extraLayer.Options, ArtboardExtraLayerOptions.OriginIsDocumentCenter)) { descendantBounds.Offset(this.DocumentBounds.Width / 2.0, this.DocumentBounds.Height / 2.0); } documentBounds.Union(descendantBounds); } } this.ZoomToFitRectangleAndAdorners(documentBounds); }
protected virtual void UpdateChildren() { if (this.designerView == null) { return; } double zoom = this.Zoom; Vector rootToArtboardScale = this.ViewRootToArtboardScale; rootToArtboardScale.X *= zoom; rootToArtboardScale.Y *= zoom; this.designerView.ZoomLevel = this.Zoom; double centerX = this.CenterX; double centerY = this.CenterY; TransformGroup transformGroup1 = new TransformGroup(); transformGroup1.Children.Add((Transform) new ScaleTransform(rootToArtboardScale.X, rootToArtboardScale.Y, centerX, centerY)); transformGroup1.Children.Add((Transform) new TranslateTransform(this.canvas.RenderSize.Width / 2.0 - centerX, this.canvas.RenderSize.Height / 2.0 - centerY)); Point point = this.TranslatePoint(new Point(1.0 / rootToArtboardScale.X, 1.0 / rootToArtboardScale.Y) * transformGroup1.Value, this.VisualTreeRoot); point.X = Math.Round(point.X) - point.X; point.Y = Math.Round(point.Y) - point.Y; transformGroup1.Children.Add((Transform) new TranslateTransform(point.X, point.Y)); transformGroup1.Freeze(); this.designerView.RenderTransform = (Transform)transformGroup1; this.feedbackLayer.RenderTransform = (Transform)transformGroup1; this.liveControlLayer.RenderTransform = (Transform)transformGroup1; this.annotationLayer.RenderTransform = (Transform)transformGroup1; foreach (Artboard.ExtraLayer extraLayer in this.extraLayers) { TransformGroup transformGroup2 = transformGroup1; if (ArtboardExtraLayerOptionsExtensions.IsSet(extraLayer.Options, ArtboardExtraLayerOptions.OriginIsDocumentCenter)) { transformGroup2 = new TransformGroup(); transformGroup2.Children.Add((Transform) new TranslateTransform(this.DocumentBounds.Width / 2.0, this.DocumentBounds.Height / 2.0)); transformGroup2.Children.Add((Transform)transformGroup1); transformGroup2.Freeze(); } extraLayer.Layer.RenderTransform = (Transform)transformGroup2; } this.annotationLayer.ChildRenderTransform = (Transform) new ScaleTransform(1.0 / zoom, 1.0 / zoom, 0.0, 0.0); this.contentBorder.BorderThickness = new Thickness(1.0 / rootToArtboardScale.X); this.transform = (Transform)transformGroup1; this.snapToGridRenderer.InvalidateVisual(); }