Browse Source

compdfkit demo windows - 文字和图片编辑 增加鼠标滚动缩放

liyuxuan 1 year ago
parent
commit
96581ecded
1 changed files with 55 additions and 20 deletions
  1. 55 20
      compdfkit_demo_windows/compdfkit/edit-ctrl-demo/MainWindow.xaml.cs

+ 55 - 20
compdfkit_demo_windows/compdfkit/edit-ctrl-demo/MainWindow.xaml.cs

@@ -66,6 +66,10 @@ namespace edit_ctrl_demo
         /// 上一次的PDF编辑对象
         /// </summary>
         private PDFEditEvent lastPDFEditEvent = null;
+        /// <summary>
+        /// 缩放比例
+        /// </summary>
+        private double[] zoomLevel = { 1.00f, 8f, 12f, 25, 33f, 50, 66f, 75, 100, 125, 150, 200, 300, 400, 600, 800, 1000 };
         public MainWindow()
         {
             InitializeComponent();
@@ -81,7 +85,6 @@ namespace edit_ctrl_demo
         /// <summary>
         ///触发属性更改事件通知
         /// </summary>
-      
         protected void OnPropertyChanged([CallerMemberName] string name = null)
         {
             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
@@ -94,6 +97,48 @@ namespace edit_ctrl_demo
             PDFView.PDFEditActiveHandler += PDFView_PDFEditActiveHandler;
             PDFView.UndoManager.PropertyChanged += UndoManager_PropertyChanged;
             PDFView.PDFEditCommandHandler += PDFView_PDFEditCommandHandler;
+            PDFView.MouseWheelZoomHandler += PDFView_MouseWheelZoomHandler;
+        }
+
+        /// <summary>
+        /// 鼠标滚轮缩放事件
+        /// </summary>
+        private void PDFView_MouseWheelZoomHandler(object sender, bool e)
+        {
+            double newZoom = CheckZoomLevel(PDFView.ZoomFactor + (e ? 0.01 : -0.01), e);
+            PDFView?.Zoom(newZoom);
+        }
+
+        /// <summary>
+        /// 检查缩放比例
+        /// </summary>
+        private double CheckZoomLevel(double zoom, bool IsGrowth)
+        {
+            double standardZoom = 100;
+            if (zoom <= 0.01)
+            {
+                return 0.01;
+            }
+            if (zoom >= 10)
+            {
+                return 10;
+            }
+
+            zoom *= 100;
+            for (int i = 0; i < zoomLevel.Length - 1; i++)
+            {
+                if (zoom > zoomLevel[i] && zoom <= zoomLevel[i + 1] && IsGrowth)
+                {
+                    standardZoom = zoomLevel[i + 1];
+                    break;
+                }
+                if (zoom >= zoomLevel[i] && zoom < zoomLevel[i + 1] && !IsGrowth)
+                {
+                    standardZoom = zoomLevel[i];
+                    break;
+                }
+            }
+            return standardZoom / 100;
         }
 
         /// <summary>
@@ -220,26 +265,17 @@ namespace edit_ctrl_demo
             if (senderBtn != null)
             {
                 ClearPDFEditState(senderBtn);
-                senderBtn.IsChecked = true;
-                //if (senderBtn.IsChecked == true)
+                senderBtn.IsChecked = false;
+                PDFView?.SetPDFEditType(CPDFEditType.EditImage);
+                PDFView?.SetMouseMode(MouseModes.PDFEdit);
+                PDFView?.ReloadDocument();
+                OpenFileDialog openFileDialog = new OpenFileDialog();
+                openFileDialog.Filter = "Image Files(*.jpg;*.jpeg;*.png;*.bmp)|*.jpg;*.jpeg;*.png;*.bmp;";
+                if (openFileDialog.ShowDialog() == true)
                 {
-                    PDFView?.SetPDFEditType(CPDFEditType.EditImage);
-                    PDFView?.SetMouseMode(MouseModes.PDFEdit);
-                    PDFView?.ReloadDocument();
-                    OpenFileDialog openFileDialog = new OpenFileDialog();
-                    openFileDialog.Filter = "Image Files(*.jpg;*.jpeg;*.png;*.bmp)|*.jpg;*.jpeg;*.png;*.bmp;";
-                    if (openFileDialog.ShowDialog() == true)
-                    {
-                        PDFView?.SetPDFEditCreateType(CPDFEditType.EditImage);
-                        PDFView?.AddPDFEditImage(openFileDialog.FileName);
-                    }
+                    PDFView?.SetPDFEditCreateType(CPDFEditType.EditImage);
+                    PDFView?.AddPDFEditImage(openFileDialog.FileName);
                 }
-                //else
-                //{
-                //    PDFView?.SetPDFEditType(CPDFEditType.None);
-                //    PDFView?.SetMouseMode(MouseModes.PanTool);
-                //    PDFView?.ReloadDocument();
-                //}
             }
         }
 
@@ -491,7 +527,6 @@ namespace edit_ctrl_demo
         /// <summary>
         /// 进入文字和图片编辑
         /// </summary>
-      
         private void PDFEditBtn_Click(object sender, RoutedEventArgs e)
         {
             ToggleButton senderBtn = sender as ToggleButton;