Browse Source

compdfkit(win) - 测量Demo 测量信息属性面板

liyuxuan 1 year ago
parent
commit
d7f1be2a98

+ 1 - 1
Demo/Examples/Compdfkit_Tools/Common/BarControl/CPDFMeasureBarControl.xaml.cs

@@ -265,7 +265,7 @@ namespace Compdfkit_Tools.PDFControl
             polyLineMeasureArgs.Transparency = 1;
             polyLineMeasureArgs.FontColor = Colors.Red;
             polyLineMeasureArgs.FontName = "Arial";
-            polyLineMeasureArgs.FontSize = 14;
+            polyLineMeasureArgs.FontSize = 9;
             pdfViewer?.ClearSelectAnnots();
             pdfViewer?.SetMouseMode(MouseModes.AnnotCreate);
             pdfViewer?.SetToolParam(polyLineMeasureArgs);

+ 14 - 0
Demo/Examples/Compdfkit_Tools/Compdfkit_Tools.csproj

@@ -326,9 +326,15 @@
     <Compile Include="Measure\MeasureControl.xaml.cs">
       <DependentUpon>MeasureControl.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Measure\MeasureInfoPanel.xaml.cs">
+      <DependentUpon>MeasureInfoPanel.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Measure\MeasurePropertyControl.xaml.cs">
       <DependentUpon>MeasurePropertyControl.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Measure\MeasureSettingPanel.xaml.cs">
+      <DependentUpon>MeasureSettingPanel.xaml</DependentUpon>
+    </Compile>
     <Compile Include="Measure\Property\StraightnessProperty.xaml.cs">
       <DependentUpon>StraightnessProperty.xaml</DependentUpon>
     </Compile>
@@ -839,10 +845,18 @@
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Measure\MeasureInfoPanel.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Measure\MeasurePropertyControl.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>
+    <Page Include="Measure\MeasureSettingPanel.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="Measure\Property\StraightnessProperty.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>

+ 47 - 35
Demo/Examples/Compdfkit_Tools/Measure/MeasureControl.xaml

@@ -20,40 +20,52 @@
             <RoutedUICommand x:Key="Redo" Text="Redo"></RoutedUICommand>
         </ResourceDictionary>
     </UserControl.Resources>
-    <Grid Name="BodyGrid">
-        <Grid.RowDefinitions>
-            <RowDefinition Height="auto"/>
-            <RowDefinition Height="*"/>
-        </Grid.RowDefinitions>
-        <Grid.ColumnDefinitions>
-            <ColumnDefinition Width="0"></ColumnDefinition>
-            <ColumnDefinition Width="0"></ColumnDefinition>
-            <ColumnDefinition Width="*"></ColumnDefinition>
-            <ColumnDefinition Width="auto"></ColumnDefinition>
-        </Grid.ColumnDefinitions>
-        <Border x:Name="ToolBarContainer" Height="45" Visibility="Visible" BorderThickness="1" BorderBrush="#1A000000" Background="#F2F3F5" Grid.ColumnSpan="4">
-            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
-                <cpdftools:CPDFMeasureBarControl x:Name="PDFMeasureTool"  Grid.ColumnSpan="4" Height="44"/>
-            </StackPanel>
-        </Border>
-        <Border Grid.Row="1" Visibility="Collapsed" Name="BotaContainer"></Border>
-        <GridSplitter  Grid.Row="1" Name="Splitter" Grid.Column="1" Width="15" ResizeBehavior="PreviousAndNext" Visibility="Collapsed">
-            <GridSplitter.Template>
-                <ControlTemplate TargetType="{x:Type GridSplitter}">
-                    <Border BorderThickness="{TemplateBinding Border.BorderThickness}"
-                            BorderBrush="{TemplateBinding Border.BorderBrush}"
-                            Background="{TemplateBinding Panel.Background}" >
-                        <Path Fill="Gray" VerticalAlignment="Center">
-                            <Path.Data>
-                                M15 3.75H1V2.25H15V3.75ZM15 8.75H1V7.25H15V8.75ZM1 13.75H15V12.25H1V13.75Z
-                            </Path.Data>
-                        </Path>
-                    </Border>
-                </ControlTemplate>
-            </GridSplitter.Template>
-        </GridSplitter>
-        <Border x:Name="PDFGrid" Background="#CECECE" Grid.Row="1" Grid.Column="2"></Border>
-        <Border Grid.Column="3" Name="PropertyContainer" Grid.Row="1" Visibility="Collapsed" ></Border>
-        <cpdfcommon:PageNumberControl  Grid.Column="2" Grid.Row="1" x:Name="FloatPageTool" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,20"></cpdfcommon:PageNumberControl>
+    <Grid>
+        <Grid Name="BodyGrid">
+            <Grid.RowDefinitions>
+                <RowDefinition Height="auto"/>
+                <RowDefinition Height="*"/>
+            </Grid.RowDefinitions>
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="0"></ColumnDefinition>
+                <ColumnDefinition Width="0"></ColumnDefinition>
+                <ColumnDefinition Width="*"></ColumnDefinition>
+                <ColumnDefinition Width="auto"></ColumnDefinition>
+            </Grid.ColumnDefinitions>
+            <Border x:Name="ToolBarContainer" Height="45" Visibility="Visible" BorderThickness="1" BorderBrush="#1A000000" Background="#F2F3F5" Grid.ColumnSpan="4">
+                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
+                    <cpdftools:CPDFMeasureBarControl x:Name="PDFMeasureTool"  Grid.ColumnSpan="4" Height="44"/>
+                </StackPanel>
+            </Border>
+            <Border Grid.Row="1" Visibility="Collapsed" Name="BotaContainer"></Border>
+            <GridSplitter  Grid.Row="1" Name="Splitter" Grid.Column="1" Width="15" ResizeBehavior="PreviousAndNext" Visibility="Collapsed">
+                <GridSplitter.Template>
+                    <ControlTemplate TargetType="{x:Type GridSplitter}">
+                        <Border BorderThickness="{TemplateBinding Border.BorderThickness}"
+                         BorderBrush="{TemplateBinding Border.BorderBrush}"
+                         Background="{TemplateBinding Panel.Background}" >
+                            <Path Fill="Gray" VerticalAlignment="Center">
+                                <Path.Data>
+                                    M15 3.75H1V2.25H15V3.75ZM15 8.75H1V7.25H15V8.75ZM1 13.75H15V12.25H1V13.75Z
+                                </Path.Data>
+                            </Path>
+                        </Border>
+                    </ControlTemplate>
+                </GridSplitter.Template>
+            </GridSplitter>
+            <Grid Grid.Row="1" Grid.Column="2">
+                <Border x:Name="PDFGrid" Background="#CECECE"></Border>
+                <local:MeasureInfoPanel x:Name="InfoPanel" Width="320" Height="250" HorizontalAlignment="Right" Margin="0,20,30,0"
+                                 VerticalAlignment="Top" SettingClick="MeasureInfoPanel_SettingClick"></local:MeasureInfoPanel>
+
+                <local:MeasureSettingPanel x:Name="SettingPanel" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="Collapsed"
+                                           CancelEvent="SettingPanel_CancelEvent"
+                                           DoneEvent="SettingPanel_DoneEvent">
+                    
+                </local:MeasureSettingPanel>
+            </Grid>
+            <Border Grid.Column="3" Name="PropertyContainer" Grid.Row="1" Visibility="Collapsed" ></Border>
+            <cpdfcommon:PageNumberControl  Grid.Column="2" Grid.Row="1" x:Name="FloatPageTool" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,20"></cpdfcommon:PageNumberControl>
+        </Grid>
     </Grid>
 </UserControl>

+ 19 - 0
Demo/Examples/Compdfkit_Tools/Measure/MeasureControl.xaml.cs

@@ -45,6 +45,7 @@ namespace Compdfkit_Tools.Measure
             PDFMeasureTool.InitWithPDFViewer(pdfViewer, measurePropertyControl);
             FloatPageTool.InitWithPDFViewer(pdfViewer);
             PDFGrid.Child = PdfViewControl;
+
             panelState.PropertyChanged -= PanelState_PropertyChanged;
             panelState.PropertyChanged += PanelState_PropertyChanged;
         }
@@ -143,5 +144,23 @@ namespace Compdfkit_Tools.Measure
         {
 
         }
+
+        private void MeasureInfoPanel_SettingClick(object sender, EventArgs e)
+        {
+            InfoPanel.Visibility = Visibility.Collapsed;
+            SettingPanel.Visibility = Visibility.Visible;
+        }
+
+        private void SettingPanel_CancelEvent(object sender, EventArgs e)
+        {
+            InfoPanel.Visibility = Visibility.Visible;
+            SettingPanel.Visibility = Visibility.Collapsed;
+        }
+
+        private void SettingPanel_DoneEvent(object sender, EventArgs e)
+        {
+            InfoPanel.Visibility = Visibility.Visible;
+            SettingPanel.Visibility = Visibility.Collapsed;
+        }
     }
 }

+ 126 - 0
Demo/Examples/Compdfkit_Tools/Measure/MeasureInfoPanel.xaml

@@ -0,0 +1,126 @@
+<UserControl x:Class="Compdfkit_Tools.Measure.MeasureInfoPanel"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:Compdfkit_Tools.Measure"
+             mc:Ignorable="d" 
+             d:DesignHeight="350" d:DesignWidth="150">
+    <Border BorderBrush="LightGray" CornerRadius="4" Background="White">
+        <Border.Effect>
+            <DropShadowEffect BlurRadius="20" ShadowDepth="0" Color="Black" Opacity="0.4"/>
+        </Border.Effect>
+        <Grid Margin="20,20,0,0" Width="300" Height="250">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="auto"></ColumnDefinition>
+                <ColumnDefinition Width="*"></ColumnDefinition>
+            </Grid.ColumnDefinitions>
+            <Grid.RowDefinitions>
+                <RowDefinition Height="auto"></RowDefinition>
+                <RowDefinition Height="auto"></RowDefinition>
+                <RowDefinition Height="auto"></RowDefinition>
+            </Grid.RowDefinitions>
+
+            <Path Name="MeasureIcon" Width="20" Height="20" Fill="#43474D">
+                <Path.Data>
+                    M17.7782 5.75646L14.2427 2.22093L13.0052 3.45837L15.4802 5.93333L14.4195 6.99399L11.9446 4.51903L10.1768 
+6.28679L12.6518 8.76175L11.5911 9.82241L9.11615 7.34745L7.34838 9.11522L9.82334 11.5902L8.76268 12.6508L6.28772 
+10.1759L4.51996 11.9436L6.99492 14.4186L5.93426 15.4793L3.4593 13.0043L2.22186 14.2417L5.75739 17.7773L17.7782 
+5.75646ZM15.3033 1.16027L14.2427 0.0996094L13.182 1.16027L1.1612 13.1811L0.100539 14.2417L1.1612 15.3024L4.69673 
+18.8379L5.75739 19.8986L6.81805 18.8379L18.8389 6.81712L19.8995 5.75646L18.8389 4.6958L15.3033 1.16027Z
+                </Path.Data>
+            </Path>
+
+            <TextBlock Name="MeasureTitelText" Grid.Column="1" Margin="10,0,0,0" VerticalAlignment="Center"
+          FontSize="16">Distance Measurement</TextBlock>
+
+            <Grid Grid.Row="1" Grid.Column="1" Margin="0,10,0,0" Visibility="Collapsed">
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="60"></ColumnDefinition>
+                    <ColumnDefinition Width="auto"></ColumnDefinition>
+                </Grid.ColumnDefinitions>
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                </Grid.RowDefinitions>
+                <TextBlock FontSize="14">Scale:</TextBlock>
+                <TextBlock Name="ScaleText" Grid.Column="1" FontSize="14"></TextBlock>
+
+                <TextBlock Grid.Row="1" Margin="0,10,0,0" FontSize="14">Distance:</TextBlock>
+                <TextBlock Name="DistanceText" Grid.Row="1" Grid.Column="1" Margin="0,10,0,0" FontSize="14"></TextBlock>
+
+                <TextBlock Grid.Row="2"  Margin="0,10,0,0" FontSize="14">Precision:</TextBlock>
+                <TextBlock Name="PrecisionText" Grid.Row="2" Grid.Column="1" Margin="0,10,0,0" FontSize="14"></TextBlock>
+
+                <TextBlock Grid.Row="3" Margin="0,10,0,0" FontSize="14">Angle:</TextBlock>
+                <TextBlock Name="AngleText" Grid.Row="3" Grid.Column="1" Margin="0,10,0,0" FontSize="14"></TextBlock>
+
+                <TextBlock Grid.Row="4" Margin="0,10,0,0" FontSize="14">X:</TextBlock>
+                <TextBlock Name="XText" Grid.Row="4" Grid.Column="1" Margin="0,10,0,0" FontSize="14"></TextBlock>
+
+                <TextBlock Grid.Row="5" Margin="0,10,0,0" FontSize="14">Y:</TextBlock>
+                <TextBlock Name="YText" Grid.Row="5" Grid.Column="1" Margin="0,10,0,0" FontSize="14"></TextBlock>
+
+            </Grid>
+
+            <Grid Grid.Row="1" Grid.Column="1" Margin="0,10,0,0" Visibility="Collapsed">
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="60"></ColumnDefinition>
+                    <ColumnDefinition Width="auto"></ColumnDefinition>
+                </Grid.ColumnDefinitions>
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                </Grid.RowDefinitions>
+                <TextBlock FontSize="14">Scale:</TextBlock>
+                <TextBlock Name="ScalePolyLineText" Grid.Column="1" FontSize="14"></TextBlock>
+
+                <TextBlock Grid.Row="1" Margin="0,10,0,0" FontSize="14">Distance:</TextBlock>
+                <TextBlock Name="RoundPolyLineText" Grid.Row="1" Grid.Column="1" Margin="0,10,0,0" FontSize="14"></TextBlock>
+
+                <TextBlock Grid.Row="2"  Margin="0,10,0,0" FontSize="14">Precision:</TextBlock>
+                <TextBlock Name="PrecisionPolyLineText" Grid.Row="2" Grid.Column="1" Margin="0,10,0,0" FontSize="14"></TextBlock>
+
+                <TextBlock Grid.Row="3" Margin="0,10,0,0" FontSize="14">Angle:</TextBlock>
+                <TextBlock Name="AnglePolyLineText" Grid.Row="3" Grid.Column="1" Margin="0,10,0,0" FontSize="14"></TextBlock>
+
+            </Grid>
+
+            <Grid Grid.Row="1" Grid.Column="1" Margin="0,10,0,0" Visibility="Collapsed">
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="60"></ColumnDefinition>
+                    <ColumnDefinition Width="auto"></ColumnDefinition>
+                </Grid.ColumnDefinitions>
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                </Grid.RowDefinitions>
+                <TextBlock FontSize="14">Scale:</TextBlock>
+                <TextBlock Name="ScalePolygonText" Grid.Column="1" FontSize="14"></TextBlock>
+
+                <TextBlock Grid.Row="1" Margin="0,10,0,0" FontSize="14">Round:</TextBlock>
+                <TextBlock Name="RoundPolygonText" Grid.Row="1" Grid.Column="1" Margin="0,10,0,0" FontSize="14"></TextBlock>
+
+                <TextBlock Grid.Row="2"  Margin="0,10,0,0" FontSize="14">Precision:</TextBlock>
+                <TextBlock Name="PrecisionPolygonText" Grid.Row="2" Grid.Column="1" Margin="0,10,0,0" FontSize="14"></TextBlock>
+
+                <TextBlock Grid.Row="3" Margin="0,10,0,0" FontSize="14">Angle:</TextBlock>
+                <TextBlock Name="AnglePolygonText" Grid.Row="3" Grid.Column="1" Margin="0,10,0,0" FontSize="14"></TextBlock>
+
+            </Grid>
+
+            <TextBlock Grid.Row="2" Grid.ColumnSpan="2" HorizontalAlignment="Right" 
+                       Margin="0,10,20,0" FontSize="14" Foreground="Blue" Cursor="Hand"
+          MouseLeftButtonDown="TextBlock_MouseLeftButtonDown">Settings</TextBlock>
+
+        </Grid>
+    </Border>
+</UserControl>

+ 76 - 0
Demo/Examples/Compdfkit_Tools/Measure/MeasureInfoPanel.xaml.cs

@@ -0,0 +1,76 @@
+using ComPDFKit.Measure;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Compdfkit_Tools.Measure
+{
+    /// <summary>
+    /// MeasureInfoPanel.xaml 的交互逻辑
+    /// </summary>
+    public partial class MeasureInfoPanel : UserControl
+    {
+        public event EventHandler SettingClick;
+        public CPDFMeasureType MeasureType { get; private set; }
+
+        internal Dictionary<string, string> IconsDict { get; private set; } = new Dictionary<string, string>()
+        {
+            {
+                "Distance Measurement",
+                "M17.7782 5.75646L14.2427 2.22093L13.0052 3.45837L15.4802 5.93333L14.4195 6.99399L11.9446 4.51903L10.1768 " +
+                "6.28679L12.6518 8.76175L11.5911 9.82241L9.11615 7.34745L7.34838 9.11522L9.82334 11.5902L8.76268 " +
+                "12.6508L6.28772 10.1759L4.51996 11.9436L6.99492 14.4186L5.93426 15.4793L3.4593 13.0043L2.22186 " +
+                "14.2417L5.75739 17.7773L17.7782 5.75646ZM15.3033 1.16027L14.2427 0.0996094L13.182 1.16027L1.1612 " +
+                "13.1811L0.100539 14.2417L1.1612 15.3024L4.69673 18.8379L5.75739 19.8986L6.81805 18.8379L18.8389 " +
+                "6.81712L19.8995 5.75646L18.8389 4.6958L15.3033 1.16027Z"
+            },
+            {
+                "Multiline",
+                "M0.5 3C0.5 1.89543 1.39543 1 2.5 1C3.33934 1 4.05793 1.51704 4.35462 2.25H15.6454C15.9421 1.51704 16.6607 1 " +
+                "17.5 1C18.6046 1 19.5 1.89543 19.5 3C19.5 3.83934 18.983 4.55793 18.25 4.85462V17V17.75H17.5H13.7011L14.5167 " +
+                "18.5765L13.5138 19.5928L11.4986 17.5505L10.9972 17.0423L11.4986 16.5342L13.5138 14.4918L14.5167 15.5082L13.7847 " +
+                "16.25H16.75V4.85462C16.2487 4.65168 15.8483 4.25135 15.6454 3.75H4.35462C4.15168 4.25135 3.75135 4.65168 3.25 " +
+                "4.85462V16.25H6.25V15H7.75V19H6.25V17.75H2.5H1.75V17V4.85462C1.01704 4.55793 0.5 3.83934 0.5 3Z"
+            },
+            {
+                "Polygonal",
+                "M1.37111 7.6963L10 1.42705L18.6289 7.6963L15.3329 17.8402H4.66705L1.37111 7.6963Z"
+            }
+
+        };
+
+        public MeasureInfoPanel()
+        {
+            InitializeComponent();
+        }
+
+        public void SetMeasureType(CPDFMeasureType newType)
+        {
+            MeasureType=newType;
+            int iconIndex = (int)newType;
+            if(iconIndex>=0 &&  iconIndex< IconsDict.Count)
+            {
+                TypeConverter typeCovert = TypeDescriptor.GetConverter(typeof(Geometry));
+                MeasureIcon.Data = PathGeometry.CreateFromGeometry((Geometry)typeCovert.ConvertFrom(IconsDict.ElementAt(iconIndex).Value));
+                MeasureTitelText.Text = IconsDict.ElementAt(iconIndex).Key;
+            }
+        }
+
+        private void TextBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            SettingClick?.Invoke(this, e);
+        }
+    }
+}

+ 92 - 0
Demo/Examples/Compdfkit_Tools/Measure/MeasureSettingPanel.xaml

@@ -0,0 +1,92 @@
+<UserControl x:Class="Compdfkit_Tools.Measure.MeasureSettingPanel"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
+             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
+             xmlns:local="clr-namespace:Compdfkit_Tools.Measure"
+             mc:Ignorable="d" 
+             d:DesignHeight="450" d:DesignWidth="800">
+    <Border BorderBrush="LightGray" CornerRadius="4" Background="White" Width="530" Height="350">
+        <Border.Effect>
+            <DropShadowEffect BlurRadius="20" ShadowDepth="0" Color="Black" Opacity="0.4"/>
+        </Border.Effect>
+
+        <Grid Margin="20">
+            <Grid.RowDefinitions>
+                <RowDefinition Height="auto"></RowDefinition>
+                <RowDefinition Height="auto"></RowDefinition>
+                <RowDefinition Height="auto"></RowDefinition>
+                <RowDefinition Height="auto"></RowDefinition>
+                <RowDefinition Height="auto"></RowDefinition>
+            </Grid.RowDefinitions>
+            <TextBlock FontSize="16">Measure Settings</TextBlock>
+
+            <Grid Grid.Row="1" Margin="0,20,0,0">
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                </Grid.RowDefinitions>
+                <TextBlock FontSize="14" FontWeight="Bold">Custom Scale</TextBlock>
+                <TextBlock FontSize="14" Grid.Row="1" Margin="0,10,0,10">Drawing dimensions: Actual size</TextBlock>
+                <StackPanel Grid.Row="2" Orientation="Horizontal">
+                    <TextBox Width="110"  VerticalContentAlignment="Center" FontSize="14">
+                        
+                    </TextBox>
+                    <ComboBox Width="110" FontSize="14" Margin="10,0,0,0" VerticalContentAlignment="Center">
+                        <ComboBoxItem>in</ComboBoxItem>
+                        <ComboBoxItem IsSelected="True">cm</ComboBoxItem>
+                        <ComboBoxItem>mm</ComboBoxItem>
+                    </ComboBox>
+                    <TextBlock FontSize="14" Margin="10,0,10,0">=</TextBlock>
+                    <TextBox Width="110" FontSize="14" VerticalContentAlignment="Center">
+                        
+                    </TextBox>
+                    <ComboBox Width="110" FontSize="14" Margin="10,0,0,0" VerticalContentAlignment="Center">
+                        <ComboBoxItem>pt</ComboBoxItem>
+                        <ComboBoxItem IsSelected="True">cm</ComboBoxItem>
+                        <ComboBoxItem>in</ComboBoxItem>
+                        <ComboBoxItem>mm</ComboBoxItem>
+                        <ComboBoxItem>m</ComboBoxItem>
+                        <ComboBoxItem>km</ComboBoxItem>
+                        <ComboBoxItem>ft</ComboBoxItem>
+                        <ComboBoxItem>yd</ComboBoxItem>
+                        <ComboBoxItem>mi</ComboBoxItem>
+                    </ComboBox>
+                </StackPanel>
+                <TextBlock Grid.Row="3" Margin="0,10,0,10" FontSize="14">
+                    Precision Setting
+                </TextBlock>
+                <ComboBox Grid.Row="4" Width="110" HorizontalAlignment="Left">
+                    <ComboBoxItem>1</ComboBoxItem>
+                    <ComboBoxItem >0.1</ComboBoxItem>
+                    <ComboBoxItem IsSelected="True">0.01</ComboBoxItem>
+                    <ComboBoxItem>0.001</ComboBoxItem>
+                    <ComboBoxItem>0.0001</ComboBoxItem>
+                    <ComboBoxItem>0.00001</ComboBoxItem>
+                </ComboBox>
+            </Grid>
+            
+            <Separator Grid.Row="2" Margin="0,10,0,10"></Separator>
+            
+            <Grid Grid.Row="3">
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                    <RowDefinition Height="auto"></RowDefinition>
+                </Grid.RowDefinitions>
+                
+                <TextBlock FontSize="14" >Measurement Dimension</TextBlock>
+                <CheckBox Grid.Row="1" Margin="0,10,0,10" FontSize="14">Display perimeter</CheckBox>
+                <CheckBox Grid.Row="2" FontSize="14">Display area</CheckBox>
+            </Grid>
+
+            <StackPanel Grid.Row="4" HorizontalAlignment="Right" Orientation="Horizontal">
+                <Button Width="110" Height="32" Click="ButtonCancel_Click">Cancel</Button>
+                <Button Width="110" Height="32" Click="ButtonDone_Click" Margin="10,0,0,0">Done</Button>
+            </StackPanel>
+        </Grid>
+    </Border>
+</UserControl>

+ 40 - 0
Demo/Examples/Compdfkit_Tools/Measure/MeasureSettingPanel.xaml.cs

@@ -0,0 +1,40 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Compdfkit_Tools.Measure
+{
+    /// <summary>
+    /// MeasureSettingPanel.xaml 的交互逻辑
+    /// </summary>
+    public partial class MeasureSettingPanel : UserControl
+    {
+        public event EventHandler CancelEvent;
+        public event EventHandler DoneEvent;
+        public MeasureSettingPanel()
+        {
+            InitializeComponent();
+        }
+
+        private void ButtonCancel_Click(object sender, RoutedEventArgs e)
+        {
+            CancelEvent?.Invoke(this, e);
+        }
+
+        private void ButtonDone_Click(object sender, RoutedEventArgs e)
+        {
+            DoneEvent?.Invoke(this, e);
+        }
+    }
+}

+ 1 - 1
Demo/Examples/Compdfkit_Tools/Measure/Property/MultilineProperty.xaml.cs

@@ -125,7 +125,7 @@ namespace Compdfkit_Tools.Measure.Property
         {
             if (IsLoadedData)
             {
-                MultilineEvent?.UpdateAttrib(AnnotAttrib.Thickness, CPDFOpacityControl.OpacityValue / 100D * 255D);
+                MultilineEvent?.UpdateAttrib(AnnotAttrib.Thickness, CPDFThicknessControl.Thickness);
                 MultilineEvent?.UpdateAnnot();
             }
         }

+ 2 - 2
Demo/Examples/Measure/MainWindow.xaml

@@ -168,8 +168,8 @@
                     <cpdftools:CPDFScalingControl x:Name="CPDFSaclingControl"></cpdftools:CPDFScalingControl>
                 </StackPanel>
 
-                <ComboBox Width="120" Height="26" Grid.Column="1" HorizontalAlignment="Center" FontSize="14" Foreground="#001A4E" SelectionChanged="ComboBox_SelectionChanged">
-                    <ComboBoxItem IsSelected="True">Viewer</ComboBoxItem>
+                <ComboBox Name="ViewModeBox" Width="120" Height="26" Grid.Column="1" HorizontalAlignment="Center" FontSize="14" Foreground="#001A4E" SelectionChanged="ComboBox_SelectionChanged">
+                    <ComboBoxItem>Viewer</ComboBoxItem>
                     <ComboBoxItem IsSelected="True">Measure</ComboBoxItem>
                 </ComboBox>
 

+ 14 - 2
Demo/Examples/Measure/MainWindow.xaml.cs

@@ -68,7 +68,7 @@ namespace Measure
 
         private void MainWindow_Loaded(object sender, RoutedEventArgs e)
         {
-            BotaSideTool.AddBOTAContent(BOTATools.Thumbnail | BOTATools.Outline | BOTATools.Bookmark | BOTATools.Search);
+            BotaSideTool.AddBOTAContent(BOTATools.Thumbnail | BOTATools.Outline | BOTATools.Bookmark | BOTATools.Search|BOTATools.Annotation);
             LoadDefaultDocument();
         }
 
@@ -79,7 +79,15 @@ namespace Measure
             {
                 return;
             }
-            pdfViewControl.PDFView?.SetMouseMode(MouseModes.Viewer);
+            if(ViewModeBox!=null && ViewModeBox.SelectedIndex==1)
+            {
+                pdfViewControl.PDFView?.SetMouseMode(MouseModes.PanTool);
+            }
+            else
+            {
+                pdfViewControl.PDFView?.SetMouseMode(MouseModes.Viewer);
+            }
+           
             pdfViewControl.PDFView?.Load();
             pdfViewControl.PDFView?.SetShowLink(true);
 
@@ -825,6 +833,10 @@ namespace Measure
             else if ((string)item.Content == "Measure")
             {
                 LoadMeasureRes();
+                if (pdfViewControl != null && pdfViewControl.PDFView != null)
+                {
+                    pdfViewControl.PDFView.SetMouseMode(MouseModes.PanTool);
+                }
             }
         }