2
0
Equbuxu 4 жил өмнө
parent
commit
0827074a31

+ 1 - 1
PixiEditor/Views/UserControls/Zoombox.xaml

@@ -8,7 +8,7 @@
                 x:Name="uc"
                 d:DesignHeight="450" d:DesignWidth="800">
     <Canvas MouseDown="OnMouseDown" MouseUp="OnMouseUp" MouseMove="OnMouseMove" MouseWheel="OnScroll" x:Name="mainCanvas" Background="Transparent">
-        <Grid x:Name="mainGrid">
+        <Grid x:Name="mainGrid" SizeChanged="RecalculateMinZoomLevel">
             <Grid.LayoutTransform>
                 <ScaleTransform x:Name="scaleTransform"/>
             </Grid.LayoutTransform>

+ 10 - 1
PixiEditor/Views/UserControls/Zoombox.xaml.cs

@@ -104,7 +104,7 @@ namespace PixiEditor.Views.UserControls
 
         private const double zoomFactor = 1.1;
         private const double maxZoom = 50;
-        private const double minZoom = -28;
+        private double minZoom = -28;
         public object AdditionalContent
         {
             get => GetValue(AdditionalContentProperty);
@@ -182,6 +182,7 @@ namespace PixiEditor.Views.UserControls
         {
             ZoomInto(new Point(mainCanvas.ActualWidth / 2, mainCanvas.ActualHeight / 2), delta);
         }
+
         public void ZoomInto(Point mousePos, double delta)
         {
             var oldZoomboxMousePos = ToZoomboxSpace(mousePos);
@@ -195,6 +196,14 @@ namespace PixiEditor.Views.UserControls
             SpaceOriginPos = SpaceOriginPos + deltaMousePos;
         }
 
+        private void RecalculateMinZoomLevel(object sender, SizeChangedEventArgs args)
+        {
+            double fraction = Math.Max(
+                mainCanvas.ActualWidth / mainGrid.ActualWidth,
+                mainCanvas.ActualHeight / mainGrid.ActualHeight);
+            minZoom = Math.Min(0, Math.Log(fraction / 8, zoomFactor));
+        }
+
         private Point ToScreenSpace(Point p)
         {
             double zoom = Zoom;