Selaa lähdekoodia

ComPDFKit.Tool(win)-多选删除当前选中矩形

liyijie 7 kuukautta sitten
vanhempi
commit
009a4a1cbd

+ 38 - 5
Demo/Examples/ComPDFKit.Tool/CPDFViewerTool.TextEdit.cs

@@ -115,7 +115,7 @@ namespace ComPDFKit.Tool
         /// <summary>
         /// Save Current Crop Box
         /// </summary>
-        private Thickness ClipThickness = new Thickness(0,0,0,0);
+        private Thickness ClipThickness = new Thickness(0, 0, 0, 0);
 
         /// <summary>
         /// Input variable string
@@ -202,7 +202,7 @@ namespace ComPDFKit.Tool
         /// <param name="rect"></param>
         public Thickness GetClipThickness()
         {
-            return this.ClipThickness ;
+            return this.ClipThickness;
         }
 
         private void InsertTextEditView()
@@ -529,7 +529,7 @@ namespace ComPDFKit.Tool
                     else
                     {
                         //reduction
-                        ClipThickness = new Thickness(0,0,0,0);
+                        ClipThickness = new Thickness(0, 0, 0, 0);
                     }
 
                     selectedRect.Draw();
@@ -693,7 +693,7 @@ namespace ComPDFKit.Tool
             editArea.TryGetValue(selectedRect, out editAreaObject);
             return editAreaObject;
         }
-        
+
         public EditAreaObject GetEditAreaObjectListForRect(SelectedRect selectedRect)
         {
             if (selectedRect == null)
@@ -940,6 +940,39 @@ namespace ComPDFKit.Tool
             return;
         }
 
+        /// <summary>
+        /// delete multi selectRect
+        /// </summary>
+        /// <returns></returns>
+        public bool DelMultiSelectRect()
+        {
+            MultiSelectedRect multiSelectedRect = CommonHelper.FindVisualChild<MultiSelectedRect>(PDFViewer.GetViewForTag(MultiSelectedRectViewTag));
+            if (multiSelectedRect != null && multiSelectedRect.Children.Count > 1)
+            {
+                Point point = Mouse.GetPosition(this);
+                SelectedRect selectedRect = multiSelectedRect.GetHitControlRect(point);
+                if (selectedRect != null)
+                {
+                    selectedRect = (SelectedRect)multiSelectedRect.Children[multiSelectedRect.GetMulitSelectedRectIndex(selectedRect)];
+                    if (selectedRect != null)
+                    {
+                        EditAreaObject editAreaObject = GetEditAreaObjectListForRect(selectedRect);
+                        if (editAreaObject != null)
+                        {
+
+                            multiSelectedRect.Children.Remove(selectedRect);
+                            multiSelectedRect.DelMulitSelectedRect(selectedRect);
+                            editAreaMultiIndex.Remove(editAreaObject.EditAreaIndex);
+                            editAreaList.Remove(selectedRect);
+                            multiSelectedRect.Draw();
+                            return true;
+                        }
+                    }
+                }
+            }
+            return false;
+        }
+
         public void RightDownEvent()
         {
 
@@ -1336,7 +1369,7 @@ namespace ComPDFKit.Tool
         /// <param name="content"></param>
         private void DelaySetText(string content)
         {
-            if (content == string.Empty || currentEditAreaObject == null || currentEditAreaObject.cPDFEditPage == null || content == "\u001b" )
+            if (content == string.Empty || currentEditAreaObject == null || currentEditAreaObject.cPDFEditPage == null || content == "\u001b")
             {
                 return;
             }

+ 7 - 2
Demo/Examples/ComPDFKit.Tool/CPDFViewerTool.xaml.cs

@@ -520,6 +520,11 @@ namespace ComPDFKit.Tool
                 }
                 else
                 {
+                    if (Keyboard.IsKeyDown(multiKey) &&isMultiSelected)
+                    {
+                        DelMultiSelectRect();
+                    }
+
                     if (HitTestMultiSelectedRect())
                     {
                         mouseEventObject.hitTestType = MouseHitTestType.MultiTextEdit;
@@ -531,7 +536,7 @@ namespace ComPDFKit.Tool
                         startSelectedIndex = -1;
                         startSelectedPageIndex = -1;
                         startSelectedEditAreaObject = null;
-                        
+
                         CleanSelectedMultiRect();
                         OpenSelectedMulti(false);
                         if (PDFViewer.CurrentRenderFrame != null)
@@ -888,7 +893,7 @@ namespace ComPDFKit.Tool
                     lastSelectedRect.SetCurrentDrawPointType(DrawPointType.Crop);
                     ignoreList.Add(PointControlType.Body);
                     // Initialize ClipRect
-                    ClipThickness = new Thickness(0,0,0,0);
+                    ClipThickness = new Thickness(0, 0, 0, 0);
                     if (editArea.TryGetValue(lastSelectedRect, out EditAreaObject editAreaObject))
                     {
                         cropIndex = editAreaObject.EditAreaIndex;

+ 9 - 11
Demo/Examples/ComPDFKit.Tool/ComPDFKit.Tool.csproj

@@ -9,7 +9,7 @@
     <AppDesignerFolder>Properties</AppDesignerFolder>
     <RootNamespace>ComPDFKit.Tool</RootNamespace>
     <AssemblyName>ComPDFKit.Tool</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <Deterministic>true</Deterministic>
     <TargetFrameworkProfile />
@@ -81,6 +81,14 @@
     <LangVersion>7.3</LangVersion>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="ComPDFKit.NET, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\PDF_Reader_Pro_Windows_git\pdfreaderpro_windows_exe\PDFReader_WPF\PDFReader_WPF\ComPDFKit.NET.dll</HintPath>
+    </Reference>
+    <Reference Include="ComPDFKit.Viewer, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\..\..\PDF_Reader_Pro_Windows_git\pdfreaderpro_windows_exe\PDFReader_WPF\PDFReader_WPF\ComPDFKit.Viewer.dll</HintPath>
+    </Reference>
     <Reference Include="PresentationCore" />
     <Reference Include="PresentationFramework" />
     <Reference Include="System" />
@@ -220,15 +228,5 @@
       <Name>ComPDFKit.Viewer</Name>
     </ProjectReference>
   </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\..\..\..\compdfkit_windows\ComPDFKit\ComPDFKitCSharp\ComPDFKit.NET.csproj">
-      <Project>{56e518ad-c126-4b48-9a09-0a64c87020e4}</Project>
-      <Name>ComPDFKit.NET</Name>
-    </ProjectReference>
-    <ProjectReference Include="..\..\..\..\compdfkit_windows_rebuild\ComPDFKit.Viewer\ComPDFKit.Viewer.csproj">
-      <Project>{783263cf-0da3-4095-9df8-2c4a6b3ff908}</Project>
-      <Name>ComPDFKit.Viewer</Name>
-    </ProjectReference>
-  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
 </Project>

+ 61 - 1
Demo/Examples/ComPDFKit.Tool/DrawTool/MultiSelectedRect.cs

@@ -216,6 +216,25 @@ namespace ComPDFKit.Tool.DrawTool
             selectedRects.Add(selectedobject);
         }
 
+        /// <summary>
+        /// delete
+        /// </summary>
+        /// <param name="selectedobject"></param>
+        public void DelMulitSelectedRect(SelectedRect selectedobject)
+        {
+            selectedRects.Remove(selectedobject);
+        }
+
+        /// <summary>
+        /// get selectedRects Index
+        /// </summary>
+        /// <param name="selectedobject"></param>
+        /// <returns></returns>
+        public int GetMulitSelectedRectIndex(SelectedRect selectedobject)
+        {
+          return selectedRects.IndexOf(selectedobject);
+        }
+
         public SelectedType GetSelectedType()
         {
             return selectedType;
@@ -311,7 +330,7 @@ namespace ComPDFKit.Tool.DrawTool
                             SolidColorBrush solidColorBrush = drawParam.SPDFEditMultiRectFillBrush;
                             Pen pen = drawParam.SPDFEditMultiRectLinePen;
                             GetBrushAndPen(ref solidColorBrush, ref pen);
-                            if (selectedRects.Count > 1)
+                            if (selectedRects.Count >= 1)
                             {
                                 foreach (SelectedRect item in selectedRects)
                                 {
@@ -1244,5 +1263,46 @@ namespace ComPDFKit.Tool.DrawTool
             }
             return PointControlType.None;
         }
+
+        /// <summary>
+        /// Get the rectangle where the current point is located
+        /// </summary>
+        /// <param name="clickPoint">
+        /// Coordinate point
+        /// </param>
+        /// <returns>
+        /// Control point type
+        /// </returns>
+        public SelectedRect GetHitControlRect(Point point)
+        {
+            HitTestResult hitResult = VisualTreeHelper.HitTest(this, point);
+            if (hitResult != null && hitResult.VisualHit is DrawingVisual)
+            {
+                foreach (SelectedRect selectedRect in selectedRects) {
+                    Rect defrect = selectedRect.GetRect();
+                    defrect.X -= rectPadding;
+                    defrect.Y -= rectPadding;
+                    defrect.Width += rectPadding;
+                    defrect.Height += rectPadding;
+
+                    if (defrect.Contains(point))
+                    {
+                        Rect rect = new Rect(
+                            Math.Max(defrect.X + rectPadding, 0),
+                            Math.Max(defrect.Y + rectPadding, 0),
+                            defrect.Width - 2 * rectPadding,
+                            defrect.Height - 2 * rectPadding);
+                        if (rect.Contains(point))
+                        {
+                            return selectedRect;
+                        }
+                    }
+
+                }
+
+                
+            }
+            return null;
+        }
     }
 }