Bläddra i källkod

Fractional zoom

Equbuxu 4 år sedan
förälder
incheckning
f5353f2090

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

@@ -6,7 +6,7 @@
              xmlns:local="clr-namespace:PixiEditor.Views.UserControls"
              mc:Ignorable="d" 
              d:DesignHeight="450" d:DesignWidth="800">
-    <Canvas MouseDown="OnMouseDown" MouseUp="OnMouseUp" MouseMove="OnMouseMove" MouseWheel="OnScroll" x:Name="mainCanvas">
+    <Canvas MouseDown="OnMouseDown" MouseUp="OnMouseUp" MouseMove="OnMouseMove" MouseWheel="OnScroll" x:Name="mainCanvas" Background="Transparent">
         <Grid x:Name="mainGrid">
             <Grid.LayoutTransform>
                 <ScaleTransform x:Name="scaleTransform"/>

+ 6 - 4
PixiEditor/Views/UserControls/ZoomBox.xaml.cs

@@ -53,7 +53,7 @@ namespace PixiEditor.Views.UserControls
         {
             private ZoomBox parent;
 
-            private int initZoomPower;
+            private double initZoomPower;
             private Point initSpaceOriginPos;
 
             private Point zoomOrigin;
@@ -76,7 +76,7 @@ namespace PixiEditor.Views.UserControls
             {
                 var curScreenPos = e.GetPosition(parent.mainCanvas);
                 double deltaX = screenZoomOrigin.X - curScreenPos.X;
-                int deltaPower = (int)(deltaX / 10.0);
+                double deltaPower = deltaX / 10.0;
                 parent.ZoomPower = initZoomPower - deltaPower;
 
                 parent.SpaceOriginPos = initSpaceOriginPos;
@@ -103,8 +103,8 @@ namespace PixiEditor.Views.UserControls
             }
         }
 
-        private int zoomPower;
-        private int ZoomPower
+        private double zoomPower;
+        private double ZoomPower
         {
             get => zoomPower;
             set
@@ -177,6 +177,8 @@ namespace PixiEditor.Views.UserControls
 
             ZoomPower += e.Delta / 100;
 
+            if (Math.Abs(ZoomPower) < 1) ZoomPower = 0;
+
             var shiftedMousePos = ToScreenSpace(oldZoomboxMousePos);
             var deltaMousePos = oldMousePos - shiftedMousePos;
             SpaceOriginPos = SpaceOriginPos + deltaMousePos;