Browse Source

注释 - 创建默认尺寸的形状,ToolTip

chenrongqian@kdanmobile.com 2 years ago
parent
commit
7eebf86002

+ 25 - 0
PDF Office/Styles/ContextMenuStyle.xaml

@@ -19,6 +19,31 @@
             IsEnabled="True" />
     </ContextMenu>
 
+    <!--便签ToolTip-->
+    <Style x:Key="FlowToolTip" TargetType="ToolTip">
+        <Setter Property="HorizontalAlignment" Value="Left"/>
+        <Setter Property="VerticalAlignment" Value="Top"/>
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate>
+                    <Grid>
+                        <Border Background="{StaticResource color.sys.layout.dark.bg}" CornerRadius="4" BorderBrush="{StaticResource color.sys.layout.dark.bg}" BorderThickness="4">
+                            <Border.Effect>
+                                <DropShadowEffect Direction="0" BlurRadius="7" ShadowDepth="0" Color="Black" Opacity="0.09" />
+                            </Border.Effect>
+                        </Border>
+                        <TextBlock  
+                            Margin="16,8,16,8"
+                            FontSize="13"
+                            TextWrapping="Wrap"
+                            Foreground="{StaticResource color.sys.text.anti.norm}"
+                            Text="{TemplateBinding ContentControl.Content}"/>
+                    </Grid>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
     <!--  注释 - 高亮、下划线、删除线 -右键菜单  -->
     <Style x:Key="UIElementMenuItem" TargetType="MenuItem">
         <Setter Property="Template">

+ 119 - 109
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Command.cs

@@ -126,11 +126,127 @@ namespace PDF_Office.ViewModels.Tools
                 PDFViewer.SnapshotCommandHandler -= PDFViewer_SnapshotCommandHandler;
                 PDFViewer.PDFActionHandler -= PDFViewer_PDFActionHandler;
                 PDFViewer.AnnotHoverHandler -= PDFViewer_AnnotHoverHandler;
+                
             }
         }
 
         #endregion 事件绑定和解绑
 
+        #region 与触发事件调用相关的函数
+
+        //是否为形状注释
+        private bool isShapAnnot(AnnotHandlerEventArgs annot)
+        {
+            if (annot.EventType == AnnotArgsType.AnnotCircle ||
+            annot.EventType == AnnotArgsType.AnnotSquare ||
+            annot.EventType == AnnotArgsType.AnnotLine
+            )
+            {
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
+        //是否为高亮注释
+        private bool isHightAnnot(AnnotHandlerEventArgs annot)
+        {
+            if (annot.EventType == AnnotArgsType.AnnotUnderline ||
+            annot.EventType == AnnotArgsType.AnnotSquiggly ||
+            annot.EventType == AnnotArgsType.AnnotHighlight ||
+            annot.EventType == AnnotArgsType.AnnotStrikeout
+            )
+            {
+                return true;
+            }
+            else
+            {
+                return false;
+            }
+        }
+        
+        private void GetSelectedAnnots(AnnotAttribEvent e)
+        {
+            var annot = e.AnnotItemsList[0];
+            switch (annot.EventType)
+            {
+                case AnnotArgsType.AnnotHighlight:
+                    GetHighLight(e.AnnotItemsList);
+                    break;
+
+                case AnnotArgsType.AnnotUnderline:
+                    GetUnderLine(e.AnnotItemsList);
+                    break;
+
+                case AnnotArgsType.AnnotStrikeout:
+                    GetStrikeout(e.AnnotItemsList);
+                    break;
+
+                case AnnotArgsType.AnnotSquiggly:
+                    GetSquiggly(e.AnnotItemsList);
+                    break;
+
+                case AnnotArgsType.AnnotFreehand:
+                    GetFreehand(e.AnnotItemsList);
+                    break;
+
+                case AnnotArgsType.AnnotFreeText:
+                    GetFreetext(e.AnnotItemsList);
+                    break;
+
+                case AnnotArgsType.AnnotSquare:
+                    GetRect(e.AnnotItemsList);
+                    break;
+
+                case AnnotArgsType.AnnotCircle:
+                    GetCircle(e.AnnotItemsList);
+                    break;
+
+                case AnnotArgsType.AnnotLine:
+                    bool isLine = true;
+                    if (e.Attribs.ContainsKey(AnnotAttrib.LineStart))
+                    {
+                        if ((C_LINE_TYPE)e.Attribs[AnnotAttrib.LineStart] != C_LINE_TYPE.LINETYPE_UNKNOWN && (C_LINE_TYPE)e.Attribs[AnnotAttrib.LineStart] != C_LINE_TYPE.LINETYPE_NONE)
+                        {
+                            isLine = false;
+                        }
+                    }
+                    if (e.Attribs.ContainsKey(AnnotAttrib.LineEnd))
+                    {
+                        if ((C_LINE_TYPE)e.Attribs[AnnotAttrib.LineEnd] != C_LINE_TYPE.LINETYPE_UNKNOWN && (C_LINE_TYPE)e.Attribs[AnnotAttrib.LineEnd] != C_LINE_TYPE.LINETYPE_NONE)
+                        {
+                            isLine = false;
+                        }
+                    }
+
+                    if (isLine)
+                        GetArrowLine("Line", e.AnnotItemsList);
+                    else
+                        GetArrowLine("Arrow", e.AnnotItemsList);
+
+                    break;
+
+                case AnnotArgsType.AnnotLink:
+                    //viewContentViewModel.IsCreateLink = false;
+                    GetLink(e.AnnotItemsList, e);
+
+                    break;
+
+                case AnnotArgsType.AnnotSticky:
+                    GetStickyNote(e.AnnotItemsList);
+                    customStickyPopup.GetCurrentAnnot = e.AnnotItemsList[0] as StickyAnnotArgs;
+                    customStickyPopup.GetPDFViewer = PDFViewer;
+                    break;
+
+                case AnnotArgsType.AnnotStamp:
+                    GetStamp();
+                    break;
+            }
+        }
+
+        #endregion
+
         #region PDFViewer事件
 
         //选中和非选中注释
@@ -285,115 +401,6 @@ namespace PDF_Office.ViewModels.Tools
             }
         }
 
-        private bool isShapAnnot(AnnotHandlerEventArgs annot)
-        {
-            if (annot.EventType == AnnotArgsType.AnnotCircle ||
-            annot.EventType == AnnotArgsType.AnnotSquare ||
-            annot.EventType == AnnotArgsType.AnnotLine
-            )
-            {
-                return true;
-            }
-            else
-            {
-                return false;
-            }
-        }
-
-        private bool isHightAnnot(AnnotHandlerEventArgs annot)
-        {
-            if (annot.EventType == AnnotArgsType.AnnotUnderline ||
-            annot.EventType == AnnotArgsType.AnnotSquiggly ||
-            annot.EventType == AnnotArgsType.AnnotHighlight ||
-            annot.EventType == AnnotArgsType.AnnotStrikeout
-            )
-            {
-                return true;
-            }
-            else
-            {
-                return false;
-            }
-        }
-
-        private void GetSelectedAnnots(AnnotAttribEvent e)
-        {
-            var annot = e.AnnotItemsList[0];
-            switch (annot.EventType)
-            {
-                case AnnotArgsType.AnnotHighlight:
-                    GetHighLight(e.AnnotItemsList);
-                    break;
-
-                case AnnotArgsType.AnnotUnderline:
-                    GetUnderLine(e.AnnotItemsList);
-                    break;
-
-                case AnnotArgsType.AnnotStrikeout:
-                    GetStrikeout(e.AnnotItemsList);
-                    break;
-
-                case AnnotArgsType.AnnotSquiggly:
-                    GetSquiggly(e.AnnotItemsList);
-                    break;
-
-                case AnnotArgsType.AnnotFreehand:
-                    GetFreehand(e.AnnotItemsList);
-                    break;
-
-                case AnnotArgsType.AnnotFreeText:
-                    GetFreetext(e.AnnotItemsList);
-                    break;
-
-                case AnnotArgsType.AnnotSquare:
-                    GetRect(e.AnnotItemsList);
-                    break;
-
-                case AnnotArgsType.AnnotCircle:
-                    GetCircle(e.AnnotItemsList);
-                    break;
-
-                case AnnotArgsType.AnnotLine:
-                    bool isLine = true;
-                    if (e.Attribs.ContainsKey(AnnotAttrib.LineStart))
-                    {
-                        if ((C_LINE_TYPE)e.Attribs[AnnotAttrib.LineStart] != C_LINE_TYPE.LINETYPE_UNKNOWN && (C_LINE_TYPE)e.Attribs[AnnotAttrib.LineStart] != C_LINE_TYPE.LINETYPE_NONE)
-                        {
-                            isLine = false;
-                        }
-                    }
-                    if (e.Attribs.ContainsKey(AnnotAttrib.LineEnd))
-                    {
-                        if ((C_LINE_TYPE)e.Attribs[AnnotAttrib.LineEnd] != C_LINE_TYPE.LINETYPE_UNKNOWN && (C_LINE_TYPE)e.Attribs[AnnotAttrib.LineEnd] != C_LINE_TYPE.LINETYPE_NONE)
-                        {
-                            isLine = false;
-                        }
-                    }
-
-                    if (isLine)
-                        GetArrowLine("Line", e.AnnotItemsList);
-                    else
-                        GetArrowLine("Arrow", e.AnnotItemsList);
-
-                    break;
-
-                case AnnotArgsType.AnnotLink:
-                    //viewContentViewModel.IsCreateLink = false;
-                    GetLink(e.AnnotItemsList, e);
-
-                    break;
-
-                case AnnotArgsType.AnnotSticky:
-                    GetStickyNote(e.AnnotItemsList);
-                    customStickyPopup.GetCurrentAnnot = e.AnnotItemsList[0] as StickyAnnotArgs;
-                    customStickyPopup.GetPDFViewer = PDFViewer;
-                    break;
-
-                case AnnotArgsType.AnnotStamp:
-                    GetStamp();
-                    break;
-            }
-        }
 
         //在注释工具的状态下,右键菜单
         private void PDFViewer_AnnotCommandHandler(object sender, AnnotCommandArgs e)
@@ -712,7 +719,10 @@ namespace PDF_Office.ViewModels.Tools
                 Pen hoverPen = new Pen(new SolidColorBrush(Color.FromArgb(0xff, 0x11, 0x8A, 0xff)), 1);
                 hoverPen.DashStyle = DashStyles.Dash;
                 e.DrawContext?.DrawRectangle(null, hoverPen, hoverRect);
+
+            
             }
+ 
         }
 
         #endregion PDFViewer事件

+ 1 - 2
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Function.cs

@@ -576,7 +576,6 @@ namespace PDF_Office.ViewModels.Tools
                 squareArgs.Transparency = 1;
                 squareArgs.LineDash = DashStyles.Solid;
                 squareArgs.Content = string.Empty;
-
                 if (squareArgs != null)
                 {
                     selectedArgs = new List<AnnotHandlerEventArgs>();
@@ -671,7 +670,7 @@ namespace PDF_Office.ViewModels.Tools
                 lineArgs.LineWidth = 1;
                 lineArgs.Transparency = 1;
                 lineArgs.Content = string.Empty;
-
+                
                 if (lineArgs != null)
                 {
                     selectedArgs = new List<AnnotHandlerEventArgs>();

+ 15 - 0
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.cs

@@ -170,6 +170,17 @@ namespace PDF_Office.ViewModels.Tools
                     PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
                     PDFViewer.SetToolParam(annotArgs);
 
+                    if (tag == "Rect" || tag == "Circle" || tag == "Arrow" || tag == "Line")
+                    {
+                        PDFViewer.ToolManager.EnableClickCreate = true;
+                        PDFViewer.ToolManager.ClickCreateWidth = 140;
+                        PDFViewer.ToolManager.ClickCreateHeight = 140;
+                    }
+                    else
+                    {
+                        PDFViewer.ToolManager.EnableClickCreate = false;
+                    }
+
                     #region 设计重新调整,阅读页空白处,右键菜单,添加链接需要显示,其他和pro mac一样的效果,不显示属性栏
 
                     //isRightMenuAddAnnot = false;
@@ -177,6 +188,10 @@ namespace PDF_Office.ViewModels.Tools
                     #endregion 设计重新调整,阅读页空白处,右键菜单,添加链接需要显示,其他和pro mac一样的效果,不显示属性栏
                 }
             }
+            else
+            {
+                PDFViewer.ToolManager.EnableClickCreate = false;
+            }
 
             //当不是注释模板,且无创建注释时,属性面板显示为空内容
             if (isTemplateAnnot == false && annotArgs == null)