Sfoglia il codice sorgente

注释 - 选中文字内容,点击矩形注释工具创建注释

chenrongqian@kdanmobile.com 1 anno fa
parent
commit
1c6a316ef1

+ 55 - 0
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Function.cs

@@ -693,6 +693,60 @@ namespace PDF_Master.ViewModels.Tools
             }
         }
 
+        //获取选中文字内容的区域大小,以及内容内容所在的页码
+        private Tuple<int, Rect> DrawRectCreateAnnot()
+        {
+            List<TextSelectNode> selectList = PDFViewer.GetSelectTextInfo();
+            Rect clientRect = Rect.Empty;
+            int pageIndex = -1;
+            if (selectList != null && selectList.Count > 0)
+            {
+                pageIndex = selectList[0].PageIndex;
+            }
+
+
+            if (selectList != null && selectList.Count > 0)
+            {
+                foreach (TextSelectNode selectNode in selectList)
+                {
+
+                    foreach (Rect rawRect in selectNode.RawRect)
+                    {
+                        clientRect.Union(rawRect);
+                    }
+                    int dpi = DpiHelpers.Dpi;
+                    if (clientRect.IsEmpty == false)
+                    {
+                        clientRect = new Rect(
+                            clientRect.Left / 72D * dpi,
+                            clientRect.Top / 72D * dpi,
+                            clientRect.Width / 72D * dpi,
+                            clientRect.Height / 72D * dpi);
+                    }
+
+                    break;
+                }
+            }
+
+            if (clientRect != Rect.Empty && pageIndex > -1)
+            {
+                return new Tuple<int, Rect>(pageIndex, clientRect);
+            }
+            return null;
+        }
+
+        //根据选中的文本内容,来创建指定大小的注释。
+        private void CreateAnnotFromSelectPageText(AnnotHandlerEventArgs annotArgs)
+        {
+            //点击注释工具,在阅读页根据选中的文本内容,创建注释矩形大小
+            var drawRectTuple = DrawRectCreateAnnot();
+            if (drawRectTuple != null)
+            {
+                annotArgs.ClientRect = drawRectTuple.Item2;
+                PDFViewer.CreatePageAnnot(drawRectTuple.Item1, annotArgs);
+            }
+        }
+
         //Event导航到填写与签名的属性面板
         private bool NavigatedToFillAndSignVM(List<AnnotHandlerEventArgs> annots, string tag)
         {
@@ -851,6 +905,7 @@ namespace PDF_Master.ViewModels.Tools
                 {
                     selectedArgs = new List<AnnotHandlerEventArgs>();
                     selectedArgs.Add(squareArgs);
+                    CreateAnnotFromSelectPageText(squareArgs);
                 }
             }
             else