Browse Source

ComPDFKit.Tool(win)-调整裁剪参数(矩形改为间距)

liyijie 7 months ago
parent
commit
db11bd4422

+ 1 - 1
Demo/Examples/ComPDFKit.Tool/CPDFToolManager.cs

@@ -869,7 +869,7 @@ namespace ComPDFKit.Tool
                                 if (isActiveCropping)
                                 {
                                     CropSelectRect();
-                                    viewerTool.SetClipRect();
+                                    viewerTool.SetClipThickness();
                                 }
                                 //Originally saved cropping logic
                             }

+ 16 - 7
Demo/Examples/ComPDFKit.Tool/CPDFViewerTool.TextEdit.cs

@@ -115,7 +115,7 @@ namespace ComPDFKit.Tool
         /// <summary>
         /// Save Current Crop Box
         /// </summary>
-        private Rect ClipRect = new Rect();
+        private Thickness ClipThickness = new Thickness(0,0,0,0);
 
         /// <summary>
         /// Input variable string
@@ -191,9 +191,18 @@ namespace ComPDFKit.Tool
         /// Restore Crop Box
         /// </summary>
         /// <param name="rect"></param>
-        public void SetClipRect(Rect rect = new Rect())
+        public void SetClipThickness(Thickness rect = new Thickness())
         {
-            this.ClipRect = rect;
+            this.ClipThickness = rect;
+        }
+
+        /// <summary>
+        /// Restore Crop Box
+        /// </summary>
+        /// <param name="rect"></param>
+        public Thickness GetClipThickness()
+        {
+            return this.ClipThickness ;
         }
 
         private void InsertTextEditView()
@@ -282,10 +291,10 @@ namespace ComPDFKit.Tool
                     if (selectedEditAreaIndex == cropIndex)
                     {
                         item.Key.SetCurrentDrawPointType(DrawPointType.Crop);
-                        if (ClipRect.Width != 0)
+                        if (!ClipThickness.Equals(new Thickness(0, 0, 0, 0)))
                         {
                             //Restore Crop Box
-                            item.Key.SetClipRect(ClipRect);
+                            item.Key.SetClipThickness(ClipThickness);
                         }
                         ignorePoints.Add(PointControlType.Body);
                     }
@@ -515,12 +524,12 @@ namespace ComPDFKit.Tool
                     if (selectedEditAreaIndex == cropIndex)
                     {
                         //Refresh ClipRect
-                        ClipRect = selectedRect.GetClipRect();
+                        ClipThickness = selectedRect.GetClipThickness();
                     }
                     else
                     {
                         //reduction
-                        ClipRect = new Rect();
+                        ClipThickness = new Thickness(0,0,0,0);
                     }
 
                     selectedRect.Draw();

+ 1 - 1
Demo/Examples/ComPDFKit.Tool/CPDFViewerTool.xaml.cs

@@ -888,7 +888,7 @@ namespace ComPDFKit.Tool
                     lastSelectedRect.SetCurrentDrawPointType(DrawPointType.Crop);
                     ignoreList.Add(PointControlType.Body);
                     // Initialize ClipRect
-                    ClipRect = new Rect();
+                    ClipThickness = new Thickness(0,0,0,0);
                     if (editArea.TryGetValue(lastSelectedRect, out EditAreaObject editAreaObject))
                     {
                         cropIndex = editAreaObject.EditAreaIndex;

+ 26 - 6
Demo/Examples/ComPDFKit.Tool/DrawTool/SelectedRect.cs

@@ -17,6 +17,7 @@ using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Media.Media3D;
 using System.Xml.Linq;
+using static ComPDFKit.Tool.Help.ImportWin32;
 using static System.Net.Mime.MediaTypeNames;
 
 namespace ComPDFKit.Tool.DrawTool
@@ -512,23 +513,42 @@ namespace ComPDFKit.Tool.DrawTool
             return drawRect;
         }
 
+        /// <summary>
+        /// Obtain cropped and actual region margin
+        /// </summary>
+        /// <returns></returns>
+        public Thickness GetClipThickness()
+        {
+            return clipThickness;
+        }
+
         /// <summary>
         /// Get ClipRect
         /// </summary>
         /// <returns></returns>
         public Rect GetClipRect()
         {
-            return clipRect;
+            Rect drawrect = new Rect(0, 0, 0, 0);
+            drawrect.X = SetDrawRect.X - clipThickness.Left;
+            drawrect.Y = SetDrawRect.Y - clipThickness.Top;
+            drawrect.Width = SetDrawRect.Width - clipThickness.Right;
+            drawrect.Height = SetDrawRect.Height - clipThickness.Bottom;
+            return drawrect;
         }
 
         /// <summary>
-        /// Set ClipRect And DrawRect
+        /// Set cropping and actual area margins
         /// </summary>
         /// <returns></returns>
-        public void SetClipRect(Rect rect)
-        {
-            drawRect = rect;
-            clipRect = rect;
+        public void SetClipThickness(Thickness rect)
+        {
+            Rect drawrect= new Rect(0, 0, 0, 0);
+            drawrect.X = SetDrawRect.X - rect.Left;
+            drawrect.Y = SetDrawRect.Y - rect.Top;
+            drawrect.Width = SetDrawRect.Width - rect.Right;
+            drawrect.Height = SetDrawRect.Height - rect.Bottom;
+            drawRect = drawrect;
+            clipThickness = rect;
         }
 
         public void SetMaxRect(Rect rect)

+ 5 - 2
Demo/Examples/ComPDFKit.Tool/DrawTool/SelectedRect.protected.cs

@@ -99,7 +99,7 @@ namespace ComPDFKit.Tool.DrawTool
         /// <summary>
         /// Current drawing rectangle (calculated during operation).
         /// </summary>
-        protected Rect clipRect { get; set; } = new Rect(0, 0, 0, 0);
+        protected  Thickness clipThickness = new Thickness(0, 0, 0, 0);
 
         private Pen editPen { get; set; } = new Pen(new SolidColorBrush(Color.FromRgb(71, 126, 222)), 2) { DashStyle = DashStyles.Dash };
 
@@ -686,7 +686,10 @@ namespace ComPDFKit.Tool.DrawTool
         {
             //GeometryGroup controlGroup = new GeometryGroup();
             //controlGroup.FillRule = FillRule.Nonzero;
-            clipRect = drawRect;
+            clipThickness.Left = SetDrawRect.Left - drawRect.Left;
+            clipThickness.Top= SetDrawRect.Top - drawRect.Top;
+            clipThickness.Right = SetDrawRect.Right - drawRect.Right;
+            clipThickness.Bottom = SetDrawRect.Bottom - drawRect.Bottom;
             List<Point> controlCurrentPoints=GetControlPoint(drawRect);
             CombinedGeometry controlGroup = new CombinedGeometry();
             RectangleGeometry paintGeometry = new RectangleGeometry();