Browse Source

compdfkit(windows) - 文件夹命名调整

liuaoran 1 year ago
parent
commit
4871d98044
100 changed files with 6185 additions and 0 deletions
  1. 141 0
      Demo/Example/Annotations/Annotations.csproj
  2. 0 0
      Demo/Example/Annotations/Annotations.csproj.user
  3. 0 0
      Demo/Example/Annotations/App.config
  4. 0 0
      Demo/Example/Annotations/App.xaml
  5. 0 0
      Demo/Example/Annotations/App.xaml.cs
  6. 0 0
      Demo/Example/Annotations/ComPDFKit.Desk.dll
  7. 0 0
      Demo/Example/Annotations/ComPDFKit.Viewer.dll
  8. 0 0
      Demo/Example/Annotations/ComPDFKit_Logo.ico
  9. 359 0
      Demo/Example/Annotations/MainWindow.xaml
  10. 870 0
      Demo/Example/Annotations/MainWindow.xaml.cs
  11. 0 0
      Demo/Example/Annotations/PDFA/sRGB2014.icc
  12. 0 0
      Demo/Example/Annotations/Properties/AssemblyInfo.cs
  13. 0 0
      Demo/Example/Annotations/Properties/Resources.Designer.cs
  14. 0 0
      Demo/Example/Annotations/Properties/Resources.resx
  15. 0 0
      Demo/Example/Annotations/Properties/Settings.Designer.cs
  16. 0 0
      Demo/Example/Annotations/Properties/Settings.settings
  17. 0 0
      Demo/Example/Annotations/SDKLicense.xml
  18. 0 0
      Demo/Example/Annotations/bin/Debug/ComPDFKit.Desk.dll
  19. 0 0
      Demo/Example/Annotations/bin/Debug/ComPDFKit.Viewer.dll
  20. BIN
      Demo/Example/Annotations/bin/Debug/ComPDFKit/CustomStamp/52d922cd-904b-4032-812f-16d390702658
  21. BIN
      Demo/Example/Annotations/bin/Debug/ComPDFKit/CustomStamp/f892fd78-7b44-480e-8725-13a8040ef311
  22. BIN
      Demo/Example/Annotations/bin/Debug/ComPDFKit/Signature/0725ebbf-6735-45e0-8c86-3c0d232a4058
  23. BIN
      Demo/Example/Annotations/bin/Debug/ComPDFKit/Signature/45d696f7-10c9-403c-97e9-6f06d7e8d53f
  24. BIN
      Demo/Example/Annotations/bin/Debug/ComPDFKit/Signature/5ef70c6c-a690-41a1-865e-034c5e5d4e8c
  25. BIN
      Demo/Example/Annotations/bin/Debug/ComPDFKit/Signature/72ced746-5e7e-4c46-92d3-6bab5aba18cf
  26. 0 0
      Demo/Example/Annotations/bin/Debug/PDFA/sRGB2014.icc
  27. 0 0
      Demo/Example/Annotations/bin/Debug/SDKLicense.xml
  28. 0 0
      Demo/Example/Annotations/bin/Debug/VirtualizingWrapPanel.dll
  29. BIN
      Demo/Example/Annotations/bin/Debug/com.compdfkit.demo.annotation.exe
  30. 6 0
      Demo/Example/Annotations/bin/Debug/com.compdfkit.demo.annotation.exe.config
  31. BIN
      Demo/Example/Annotations/bin/Debug/com.compdfkit.demo.annotation.pdb
  32. BIN
      Demo/Example/Annotations/bin/Debug/com.compdfkit.tools.dll
  33. 0 0
      Demo/Example/Annotations/bin/Debug/com.compdfkit.tools.dll.config
  34. BIN
      Demo/Example/Annotations/bin/Debug/com.compdfkit.tools.pdb
  35. 0 0
      Demo/Example/Annotations/bin/Debug/developer_guide_windows.pdf
  36. 0 0
      Demo/Example/Annotations/bin/Debug/x64/ComPDFKit.dll
  37. 0 0
      Demo/Example/Annotations/bin/Debug/x86/ComPDFKit.dll
  38. 0 0
      Demo/Example/Annotations/developer_guide_windows.pdf
  39. 4 0
      Demo/Example/Annotations/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs
  40. 4 0
      Demo/Example/Annotations/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs
  41. BIN
      Demo/Example/Annotations/obj/Debug/Annotations.csproj.AssemblyReference.cache
  42. 0 0
      Demo/Example/Annotations/obj/Debug/Annotations.csproj.CopyComplete
  43. 1 0
      Demo/Example/Annotations/obj/Debug/Annotations.csproj.CoreCompileInputs.cache
  44. 90 0
      Demo/Example/Annotations/obj/Debug/Annotations.csproj.FileListAbsolute.txt
  45. BIN
      Demo/Example/Annotations/obj/Debug/Annotations.csproj.GenerateResource.cache
  46. 0 0
      Demo/Example/Annotations/obj/Debug/Annotations.csproj.SuggestedBindingRedirects.cache
  47. BIN
      Demo/Example/Annotations/obj/Debug/App.baml
  48. 83 0
      Demo/Example/Annotations/obj/Debug/App.g.cs
  49. 83 0
      Demo/Example/Annotations/obj/Debug/App.g.i.cs
  50. BIN
      Demo/Example/Annotations/obj/Debug/DesignTimeResolveAssemblyReferences.cache
  51. BIN
      Demo/Example/Annotations/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
  52. 62 0
      Demo/Example/Annotations/obj/Debug/GeneratedInternalTypeHelper.g.i.cs
  53. BIN
      Demo/Example/Annotations/obj/Debug/MainWindow.baml
  54. 378 0
      Demo/Example/Annotations/obj/Debug/MainWindow.g.cs
  55. 378 0
      Demo/Example/Annotations/obj/Debug/MainWindow.g.i.cs
  56. 135 0
      Demo/Example/Annotations/obj/Debug/PasswordDialog.g.i.cs
  57. BIN
      Demo/Example/Annotations/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
  58. BIN
      Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.AssemblyReference.cache
  59. 0 0
      Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.CopyComplete
  60. 1 0
      Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.CoreCompileInputs.cache
  61. 30 0
      Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.FileListAbsolute.txt
  62. BIN
      Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.GenerateResource.cache
  63. 0 0
      Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.SuggestedBindingRedirects.cache
  64. BIN
      Demo/Example/Annotations/obj/Debug/annotation_ctrl_demo.Properties.Resources.resources
  65. BIN
      Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation.exe
  66. BIN
      Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation.g.resources
  67. BIN
      Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation.pdb
  68. 17 0
      Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_Content.g.cs
  69. 17 0
      Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_Content.g.i.cs
  70. 20 0
      Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_MarkupCompile.cache
  71. 20 0
      Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_MarkupCompile.i.cache
  72. 4 0
      Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_MarkupCompile.i.lref
  73. 4 0
      Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_MarkupCompile.lref
  74. 4 0
      Demo/Example/Annotations/obj/Release/.NETFramework,Version=v4.8.AssemblyAttributes.cs
  75. 83 0
      Demo/Example/Annotations/obj/Release/App.g.cs
  76. 83 0
      Demo/Example/Annotations/obj/Release/App.g.i.cs
  77. BIN
      Demo/Example/Annotations/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache
  78. 62 0
      Demo/Example/Annotations/obj/Release/GeneratedInternalTypeHelper.g.i.cs
  79. 466 0
      Demo/Example/Annotations/obj/Release/MainWindow.g.i.cs
  80. 135 0
      Demo/Example/Annotations/obj/Release/PasswordDialog.g.i.cs
  81. BIN
      Demo/Example/Annotations/obj/Release/TempPE/Properties.Resources.Designer.cs.dll
  82. BIN
      Demo/Example/Annotations/obj/Release/annotation-ctrl-demo.csproj.AssemblyReference.cache
  83. 0 0
      Demo/Example/Annotations/obj/Release/build.force
  84. 16 0
      Demo/Example/Annotations/obj/Release/com.compdfkit.demo.annotation_Content.g.cs
  85. 16 0
      Demo/Example/Annotations/obj/Release/com.compdfkit.demo.annotation_Content.g.i.cs
  86. 20 0
      Demo/Example/Annotations/obj/Release/com.compdfkit.demo.annotation_MarkupCompile.i.cache
  87. 5 0
      Demo/Example/Annotations/obj/Release/com.compdfkit.demo.annotation_MarkupCompile.i.lref
  88. 0 0
      Demo/Example/Annotations/x64/ComPDFKit.dll
  89. 0 0
      Demo/Example/Annotations/x86/ComPDFKit.dll
  90. 82 0
      Demo/Example/Compdfkit_Tools/Annotation/CPDFAnnotationPreviewerControl.xaml
  91. 224 0
      Demo/Example/Compdfkit_Tools/Annotation/CPDFAnnotationPreviewerControl.xaml.cs
  92. 385 0
      Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationData/CPDFAnnotationData.cs
  93. 24 0
      Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationList/PDFAnnotationListControl/CPDFAnnotationListControl.xaml
  94. 137 0
      Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationList/PDFAnnotationListControl/CPDFAnnotationListControl.xaml.cs
  95. 114 0
      Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationList/PDFAnnotationListUI/CPDFAnnoationListUI.xaml
  96. 260 0
      Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationList/PDFAnnotationListUI/CPDFAnnoationListUI.xaml.cs
  97. 15 0
      Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationControl/CPDFAnnotationControl.xaml
  98. 908 0
      Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationControl/CPDFAnnotationControl.xaml.cs
  99. 439 0
      Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateSignatureDialog.xaml
  100. 0 0
      Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateSignatureDialog.xaml.cs

+ 141 - 0
Demo/Example/Annotations/Annotations.csproj

@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{018AF31A-EDFB-42B1-A9DF-ECF950CA62B1}</ProjectGuid>
+    <OutputType>WinExe</OutputType>
+    <RootNamespace>annotation_ctrl_demo</RootNamespace>
+    <AssemblyName>com.compdfkit.demo.annotation</AssemblyName>
+    <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <WarningLevel>4</WarningLevel>
+    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+    <Deterministic>true</Deterministic>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup>
+    <ApplicationIcon>ComPDFKit_Logo.ico</ApplicationIcon>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="ComPDFKit.Desk, Version=1.8.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>.\ComPDFKit.Desk.dll</HintPath>
+    </Reference>
+    <Reference Include="ComPDFKit.Viewer, Version=1.8.0.0, Culture=neutral, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>.\ComPDFKit.Viewer.dll</HintPath>
+    </Reference>
+    <Reference Include="PresentationFramework.Aero2" />
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Xaml">
+      <RequiredTargetFramework>4.0</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="WindowsBase" />
+    <Reference Include="PresentationCore" />
+    <Reference Include="PresentationFramework" />
+  </ItemGroup>
+  <ItemGroup>
+    <ApplicationDefinition Include="App.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </ApplicationDefinition>
+    <Page Include="MainWindow.xaml">
+      <Generator>MSBuild:Compile</Generator>
+      <SubType>Designer</SubType>
+    </Page>
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="MainWindow.xaml.cs">
+      <DependentUpon>MainWindow.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Properties\AssemblyInfo.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\Settings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DependentUpon>Settings.settings</DependentUpon>
+      <DesignTimeSharedInput>True</DesignTimeSharedInput>
+    </Compile>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+    <None Include="developer_guide_windows.pdf">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="PDFA\sRGB2014.icc">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </None>
+    <None Include="Properties\Settings.settings">
+      <Generator>SettingsSingleFileGenerator</Generator>
+      <LastGenOutput>Settings.Designer.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="App.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Content Include="ComPDFKit.Desk.dll">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="ComPDFKit.Viewer.dll" />
+    <Resource Include="ComPDFKit_Logo.ico" />
+    <Content Include="SDKLicense.xml">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="x64\ComPDFKit.dll">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+    <Content Include="x86\ComPDFKit.dll">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Compdfkit_Tools\Compdfkit_Tools.csproj">
+      <Project>{9363bcb1-3a67-446a-8093-5708b86bf418}</Project>
+      <Name>Compdfkit_Tools</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>

compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/Annotations.csproj.user → Demo/Example/Annotations/Annotations.csproj.user


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/App.config → Demo/Example/Annotations/App.config


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/App.xaml → Demo/Example/Annotations/App.xaml


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/App.xaml.cs → Demo/Example/Annotations/App.xaml.cs


compdfkit_demo_windows/compdfkit/SDK/ComPDFKit.Desk.dll → Demo/Example/Annotations/ComPDFKit.Desk.dll


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/ComPDFKit.Viewer.dll → Demo/Example/Annotations/ComPDFKit.Viewer.dll


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/ComPDFKit_Logo.ico → Demo/Example/Annotations/ComPDFKit_Logo.ico


+ 359 - 0
Demo/Example/Annotations/MainWindow.xaml

@@ -0,0 +1,359 @@
+<Window x:Class="Annotations.MainWindow"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:Annotations"
+        xmlns:cpdftools="clr-namespace:Compdfkit_Tools.PDFControl;assembly=com.compdfkit.tools"
+        xmlns:cpdfcommon="clr-namespace:Compdfkit_Tools.Common;assembly=com.compdfkit.tools"
+        mc:Ignorable="d"
+        Loaded="MainWindow_Loaded"
+        Title="Annotations_ComPDFKit" Height="720" Width="1080"  WindowStartupLocation="CenterScreen">
+    <Window.Resources>
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="pack://application:,,,/com.compdfkit.tools;component/Asset/Styles/ToggleButtonStyle.xaml"></ResourceDictionary>
+                <ResourceDictionary Source="pack://application:,,,/com.compdfkit.tools;component/Asset/Styles/ButtonStyle.xaml"></ResourceDictionary>
+                <ResourceDictionary Source="pack://application:,,,/com.compdfkit.tools;component/Asset/Styles/ComboBoxStyle.xaml"></ResourceDictionary>
+            </ResourceDictionary.MergedDictionaries>
+        </ResourceDictionary>
+    </Window.Resources>
+    <Grid>
+        <Grid>
+            <Grid.RowDefinitions>
+                <RowDefinition Height="40"></RowDefinition>
+                <RowDefinition Height="*"></RowDefinition>
+            </Grid.RowDefinitions>
+
+            <!--顶部工具栏-->
+            <Grid>
+                <Grid.ColumnDefinitions>
+                    <ColumnDefinition Width="auto"></ColumnDefinition>
+                    <ColumnDefinition Width="*"></ColumnDefinition>
+                    <ColumnDefinition Width="auto"></ColumnDefinition>
+                </Grid.ColumnDefinitions>
+
+                <!--左侧工具栏-->
+                <StackPanel Orientation="Horizontal" Height="40" Margin="20,0,0,0">
+
+                    <!--打开文件-->
+                    <Button BorderThickness="0" VerticalContentAlignment="Center" Width="30" Height="30" Style="{StaticResource LightButtonStyle}" Background="Transparent" Click="OpenFile_Click">
+                        <Button.Content>
+                            <Viewbox Width="20" Height="20">
+                                <Path Fill="#43474D" >
+                                    <Path.Data>
+                                        M3.75,2 L3.91967773,2.00463867 C4.08325195,2.01391602 4.22851562,2.03710938 4.35546875,2.07421875 C4.52473958,2.12369792 
+                                    4.67578125,2.18489583 4.80859375,2.2578125 C4.94140625,2.33072917 5.05989583,2.41145833 5.1640625,2.5 C5.26822917,2.58854167 
+                                    5.37369792,2.66927083 5.48046875,2.7421875 C5.58723958,2.81510417 5.70182292,2.87630208 5.82421875,2.92578125 C5.94661458,2.97526042 
+                                    6.08854167,3 6.25,3 L6.25,3 L12,3 L12.1371528,3.00868056 C12.2262731,3.02025463 12.3107639,3.04340278 12.390625,3.078125 
+                                    C12.5104167,3.13020833 12.6158854,3.20182292 12.7070312,3.29296875 C12.7981771,3.38411458 12.8697917,3.48958333 12.921875,3.609375 
+                                    C12.9739583,3.72916667 13,3.859375 13,4 L13,4 L13,6 L15,6 L15.1332465,6.00868056 C15.2206308,6.02025463 15.3051215,6.04340278 
+                                    15.3867188,6.078125 C15.5091146,6.13020833 15.6158854,6.20182292 15.7070312,6.29296875 C15.7981771,6.38411458 15.8697917,6.48958333 
+                                    15.921875,6.609375 C15.9739583,6.72916667 16,6.85677083 16,6.9921875 C16,7.1484375 15.9635417,7.29947917 15.890625,7.4453125 
+                                    L15.890625,7.4453125 L12.6171875,14 L0,14 L0,3 L0.00868055556,2.86284722 C0.0202546296,2.77372685 0.0434027778,2.68923611 0.078125,2.609375 
+                                    C0.130208333,2.48958333 0.201822917,2.38411458 0.29296875,2.29296875 C0.384114583,2.20182292 0.489583333,2.13020833 0.609375,2.078125 
+                                    C0.729166667,2.02604167 0.859375,2 1,2 L1,2 L3.75,2 Z M15,7 L4.3125,7 L1.3125,13 L12,13 L15,7 Z M3.75,3 L1,3 L1,11.3828125 L3.4140625,6.5546875 
+                                    L3.48706055,6.43261719 C3.56665039,6.31738281 3.66601562,6.22265625 3.78515625,6.1484375 C3.94401042,6.04947917 4.11979167,6 4.3125,6 
+                                    L4.3125,6 L12,6 L12,4 L6.25,4 L6.08032227,3.99536133 C5.91674805,3.98608398 5.77148438,3.96289062 5.64453125,3.92578125 C5.47526042,3.87630208 
+                                    5.32421875,3.81510417 5.19140625,3.7421875 C5.05859375,3.66927083 4.94010417,3.58854167 4.8359375,3.5 C4.73177083,3.41145833 4.62630208,3.33072917 
+                                    4.51953125,3.2578125 C4.41276042,3.18489583 4.29817708,3.12369792 4.17578125,3.07421875 C4.05338542,3.02473958 3.91145833,3 3.75,3 L3.75,3 Z
+                                    </Path.Data>
+                                </Path>
+                            </Viewbox>
+                        </Button.Content>
+                        <Button.ToolTip>
+                            <ToolTip Content="Open..."></ToolTip>
+                        </Button.ToolTip>
+                    </Button>
+
+                    <!--保存文件-->
+                    <Button BorderThickness="0" VerticalContentAlignment="Center" Margin="10,0,0,0" Width="30" Height="30" Style="{StaticResource LightButtonStyle}" Background="Transparent"  
+                            Click="SaveFileBtn_Click"  IsEnabled="{Binding CanSave,Mode=OneWay}">
+                        <Button.Content>
+                            <Viewbox Width="20" Height="20">
+                                <Path Fill="#43474D" >
+                                    <Path.Data>
+                                        M11.707107,1 L15,4.29289322 L15,15 L1,15 L1,1 L11.707107,1 Z M11.293,2 L2,2 L2,14 L4,14 L4,8 L12,8 L12,14 L14,14 L14,4.707 L11.293,2 Z 
+                                        M11,9 L5,9 L5,14 L11,14 L11,9 Z M7,5 L7,6 L4,6 L4,5 L7,5 Z
+                                    </Path.Data>
+                                </Path>
+                            </Viewbox>
+                        </Button.Content>
+                        <Button.ToolTip>
+                            <ToolTip Content="Save"></ToolTip>
+                        </Button.ToolTip>
+                    </Button>
+
+                    <!--工具栏展开收缩-->
+                    <ToggleButton Name="ToolExpandBtn" Margin="13,0,0,0" BorderThickness="0" Width="30" Height="30" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="ToolExpand_Click">
+                        <ToggleButton.Content>
+                            <Path Fill="#43474D" Width="30" Height="30">
+                                <Path.Data>
+                                    M22.5 8.5H7.5V12.25H13H22.5V8.5ZM12.25 13.75H7.5V21.5H12.25V13.75ZM13.75 21.5V13.75H22.5V21.5H13.75ZM7.5 7H6V8.5V21.5V23H7.5H22.5H24V21.5V8.5V7H22.5H7.5Z
+                                </Path.Data>
+                            </Path>
+                        </ToggleButton.Content>
+                        <ToggleButton.ToolTip>
+                            <ToolTip Content="Panel"></ToolTip>
+                        </ToggleButton.ToolTip>
+                    </ToggleButton>
+
+                    <Line Margin="13,0,13,0" Stroke="#E0E0E0" X1="0" Y1="5" X2="0" Y2="35"></Line>
+
+                    <!--抓手工具-->
+                    <ToggleButton BorderThickness="0" Width="30" Height="30" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" IsChecked="True" IsEnabled="False" Visibility="Collapsed">
+                        <ToggleButton.Content>
+                            <Path Fill="#43474D">
+                                <Path.Data>
+                                    M8.7463 7.94055L8.43134 3.20358C8.38986 2.6073 8.82031 2.08322 9.40947 2.01273L9.46546 2.00656C9.75502 1.97416 10.0451 2.06271 10.2681 2.25159C10.4911 
+                                2.44047 10.6276 2.71317 10.6457 3.00614L10.9886 8.17061C10.999 8.31659 11.1097 8.43516 11.2537 8.45444C11.3176 8.46288 11.382 8.44409 11.4315 
+                                8.40258C11.481 8.36108 11.5111 8.30063 11.5145 8.23584L11.7612 3.47595C11.7918 2.85998 12.3116 2.38523 12.923 2.41468H12.9309C13.5429 2.44972 
+                                14.0111 2.97745 13.9773 3.59407L13.7218 8.51438C13.7137 8.66679 13.8235 8.79975 13.9738 8.81936C14.1225 8.83876 14.2625 8.73915 14.2914 
+                                8.59018L14.8006 6.02337C14.9178 5.41517 15.497 5.01851 16.0954 5.13574L16.1041 5.13751C16.7058 5.25854 17.0969 5.84695 16.979 6.45353L16.3684 
+                                9.53687C15.8189 13.3474 15.0586 15.5052 14.3946 16.4246C13.3649 17.8508 11.5573 17.8667 10.1251 17.8667C8.69381 17.8667 7.16012 17.5291 6.44796 
+                                16.9993C5.73492 16.4696 4.77079 15.2575 4.15837 13.9327L4.16712 13.9283C4.11876 13.8639 4.0774 13.7945 4.04376 13.7212L3.105 11.685C2.84552 11.1243 
+                                3.08338 10.4577 3.63781 10.1918L3.64656 10.1874C3.91235 10.0626 4.21656 10.0497 4.49179 10.1517C4.76702 10.2536 4.99055 10.4619 5.11287 10.7304C5.62206 
+                                11.8234 5.94227 12.324 6.07526 12.2324C6.27386 12.0949 6.12075 11.7176 5.85478 9.21249C5.67578 7.53039 5.45319 5.85328 5.18724 4.18289C5.07653 3.5968 
+                                5.44002 3.02581 6.01489 2.88273L6.07526 2.86775C6.35866 2.79957 6.65742 2.85178 6.90147 3.01215C7.14552 3.17252 7.3134 3.42693 7.36572 3.71571L8.168 
+                                8.02341C8.19642 8.17613 8.33897 8.27937 8.49171 8.25787C8.64561 8.23564 8.75656 8.09774 8.7463 7.94143V7.94055Z
+                                </Path.Data>
+                            </Path>
+                        </ToggleButton.Content>
+                    </ToggleButton>
+
+                    <Line Margin="13,0,13,0" Stroke="#E0E0E0" X1="0" Y1="5" X2="0" Y2="35"></Line>
+
+                    <cpdftools:CPDFScalingControl x:Name="CPDFSaclingControl"></cpdftools:CPDFScalingControl>
+                </StackPanel>
+
+                <!--中间工具栏-->
+                <ComboBox Style="{StaticResource ComboBoxStyle1}" Width="120" Height="26" Grid.Column="1" HorizontalAlignment="Center" FontSize="14" Foreground="#001A4E" SelectionChanged="ComboBox_SelectionChanged">
+                    <ComboBoxItem IsSelected="True" Tag="Viewer">Viewer</ComboBoxItem>
+                    <ComboBoxItem IsSelected="True" Tag="Annotation">Annotation</ComboBoxItem>
+                </ComboBox>
+
+                <!--右侧工具栏-->
+                <StackPanel Orientation="Horizontal" Grid.Column="2">
+
+                    <!--搜索按钮-->
+                    <Button BorderThickness="0" Width="40" Height="40" Style="{StaticResource LightButtonStyle}" Background="Transparent" Click="ExpandSearchBtn_Click">
+                        <Button.Content>
+                            <Path Fill="#43474D">
+                                <Path.Data>
+                                    M5.10992 13.9353C2.71184 11.5372 2.71184 7.64917 5.10992 5.25108C7.50801 2.853 11.3961 2.853 13.7942 5.25108C16.1922 7.64917 
+                                16.1922 11.5372 13.7942 13.9353C11.3961 16.3334 7.50801 16.3334 5.10992 13.9353ZM4.04926 4.19042C1.06539 7.17429 1.06539 12.0121 
+                                4.04926 14.996C6.85422 17.8009 11.2975 17.9691 14.2989 15.5005L17.1989 18.4006C17.4918 18.6935 17.9667 18.6935 18.2596 
+                                18.4006C18.5525 18.1077 18.5525 17.6328 18.2596 17.3399L15.3595 14.4399C17.828 11.4384 17.6597 6.99533 14.8548 
+                                4.19042C11.8709 1.20655 7.03313 1.20655 4.04926 4.19042Z
+                                </Path.Data>
+                            </Path>
+                        </Button.Content>
+                        <Button.ToolTip>
+                            <ToolTip Content="Search"></ToolTip>
+                        </Button.ToolTip>
+                    </Button>
+
+                    <ToggleButton  x:Name="AnnotationBarBtn" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="AnnotationBarControl_Click">
+                        <ToggleButton.Content>
+                            <Path Fill="#43474D" Width="30" Height="30">
+                                <Path.Data>
+                                    M22.5 8.5H7.5V12.25H13H22.5V8.5ZM12.25 13.75H7.5V21.5H12.25V13.75ZM13.75 21.5V13.75H22.5V21.5H13.75ZM7.5 7H6V8.5V21.5V23H7.5H22.5H24V21.5V8.5V7H22.5H7.5Z
+                                </Path.Data>
+                            </Path>
+                        </ToggleButton.Content>
+                        <ToggleButton.ToolTip>
+                            <ToolTip Content="Properties"></ToolTip>
+                        </ToggleButton.ToolTip>
+                    </ToggleButton>
+
+                    <!--页面显示-->
+                    <ToggleButton Name="ViewSettingBtn" BorderThickness="0" Width="40" Height="40" Style="{StaticResource ToggleButtonStyle}" Background="Transparent" Click="ViewSettingBtn_Click">
+                        <ToggleButton.Content>
+                            <Path Stroke="#43474D" VerticalAlignment="Center" StrokeThickness="2">
+                                <Path.Data>
+                                    <CombinedGeometry GeometryCombineMode="Exclude">
+                                        <CombinedGeometry.Geometry1>
+                                            M18.3327 10C18.3327 10 14.6017 16.25 9.99935 16.25C5.39698 16.25 1.66602 10 1.66602 10C1.66602 10 5.39698 3.75 9.99935 3.75C14.6017 3.75 18.3327 10 18.3327 10Z
+                                        </CombinedGeometry.Geometry1>
+                                        <CombinedGeometry.Geometry2>
+                                            <EllipseGeometry Center="10,10" RadiusX="2" RadiusY="2"/>
+                                        </CombinedGeometry.Geometry2>
+                                    </CombinedGeometry>
+                                </Path.Data>
+                            </Path>
+                        </ToggleButton.Content>
+                        <ToggleButton.ToolTip>
+                            <ToolTip Content="Page Display"></ToolTip>
+                        </ToggleButton.ToolTip>
+                    </ToggleButton>
+
+                    <!--页面信息-->
+                    <Button BorderThickness="0" Width="40" Height="40" Style="{StaticResource LightButtonStyle}" Background="Transparent" Click="PageInfoBtn_Click">
+                        <Button.Content>
+                            <Path Fill="#43474D" VerticalAlignment="Center">
+                                <Path.Data>
+                                    M2.75 10C2.75 5.99594 5.99594 2.75 10 2.75C14.0041 2.75 17.25 5.99594 17.25 10C17.25 14.0041 14.0041 17.25 10 
+                                17.25C5.99594 17.25 2.75 14.0041 2.75 10ZM10 1.25C5.16751 1.25 1.25 5.16751 1.25 10C1.25 14.8325 5.16751 
+                                18.75 10 18.75C14.8325 18.75 18.75 14.8325 18.75 10C18.75 5.16751 14.8325 1.25 10 1.25ZM6.5 11C7.05228 11 
+                                7.5 10.5523 7.5 10C7.5 9.44771 7.05228 9 6.5 9C5.94772 9 5.5 9.44771 5.5 10C5.5 10.5523 5.94772 11 6.5 11ZM10 
+                                11C10.5523 11 11 10.5523 11 10C11 9.44771 10.5523 9 10 9C9.44771 9 9 9.44771 9 10C9 10.5523 9.44771 11 10 11ZM14.5 
+                                10C14.5 10.5523 14.0523 11 13.5 11C12.9477 11 12.5 10.5523 12.5 10C12.5 9.44771 12.9477 9 13.5 9C14.0523 9 14.5 9.44771 14.5 10Z
+                                </Path.Data>
+                            </Path>
+                        </Button.Content>
+                        <Button.ToolTip>
+                            <ToolTip Content="Document Info"></ToolTip>
+                        </Button.ToolTip>
+                    </Button>
+                </StackPanel>
+
+            </Grid>
+
+            <Grid Name="BodyGrid" Grid.Row="1">
+                 <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:CPDFAnnotationBarControl x:Name="AnnotationBarControl" Loaded="AnnotationBarControl_Loaded" Unloaded="AnnotationBarControl_Unloaded" Height="44"/>
+                        <Line Height="40" Stroke="#D5D6D8" StrokeThickness="2" X1="0" Y1="10" X2="0" Y2="30" Margin="8,0,8,0" />
+                        <!--Undo Button-->
+                        <Button Name="UndoBtn" Style="{StaticResource LightButtonStyle}" BorderThickness="0"  Width="40" Height="40" IsEnabled="{Binding CanUndo,Mode=OneWay}"  Click="UndoButton_Click"
+                                    Background="Transparent">
+                            <Path x:Name="UndoPath" IsEnabled="{Binding CanUndo,Mode=OneWay}">
+                                <Path.Style>
+                                    <Style TargetType="Path">
+                                        <Style.Triggers>
+                                            <Trigger Property="IsEnabled" Value="False">
+                                                <Setter Property="Fill" Value="LightGray"/>
+                                            </Trigger>
+                                            <Trigger Property="IsEnabled" Value="True">
+                                                <Setter Property="Fill" Value="#43474D"/>
+                                            </Trigger>
+                                        </Style.Triggers>
+                                    </Style>
+                                </Path.Style>
+                                <Path.Data>
+                                    M1.03033 3.62131L0.5 4.15164L1.03033 4.68197L4.65164 8.30328L5.7123 7.24261L3.37132 4.90164H10.0607C11.5794 4.90164 12.8107 6.13285 12.8107 
+                                7.65164C12.8107 9.17042 11.5794 10.4016 10.0607 10.4016H2.56066V11.9016H10.0607C12.4079 11.9016 14.3107 9.99885 14.3107 7.65164C14.3107 
+                                5.30443 12.4079 3.40164 10.0607 3.40164H3.37132L5.7123 1.06066L4.65164 0L1.03033 3.62131Z
+                                </Path.Data>
+                            </Path>
+                            <Button.ToolTip>
+                                <ToolTip Content="Undo"></ToolTip>
+                            </Button.ToolTip>
+                        </Button>
+                        <!--Redo Button-->
+                        <Button Style="{StaticResource LightButtonStyle}" BorderThickness="0" Width="40" Height="40" Margin="10,0,0,0"  IsEnabled="{Binding CanRedo,Mode=OneWay}" Click="RedoButton_Click"
+                                    Background="Transparent">
+                            <Path IsEnabled="{Binding CanRedo,Mode=OneWay}">
+                                <Path.Resources>
+                                    <Style TargetType="Path">
+                                        <Style.Triggers>
+                                            <Trigger Property="IsEnabled" Value="False">
+                                                <Setter Property="Fill" Value="LightGray"/>
+                                            </Trigger>
+                                            <Trigger Property="IsEnabled" Value="True">
+                                                <Setter Property="Fill" Value="#43474D"/>
+                                            </Trigger>
+                                        </Style.Triggers>
+                                    </Style>
+                                </Path.Resources>
+                                <Path.Data>
+                                    M13.7802 3.62131L14.3105 4.15164L13.7802 4.68197L10.1589 8.30328L9.09825 7.24261L11.4392 4.90164H4.74989C3.2311 4.90164 1.99989 6.13285 
+                                1.99989 7.65164C1.99989 9.17042 3.2311 10.4016 4.74989 10.4016H12.2499V11.9016H4.74989C2.40268 11.9016 0.499887 9.99885 0.499887 
+                                7.65164C0.499887 5.30443 2.40268 3.40164 4.74989 3.40164H11.4392L9.09825 1.06066L10.1589 0L13.7802 3.62131Z
+                                </Path.Data>
+                            </Path>
+                            <Button.ToolTip>
+                                <ToolTip Content="Redo"></ToolTip>
+                            </Button.ToolTip>
+                        </Button>
+                    </StackPanel>
+                </Border>
+                   
+                <cpdftools:CPDFBOTABarControl Grid.Row="1" Visibility="Collapsed" Name="BotaSideTool"/>
+                <!--拖动调节控件大小-->
+                <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" >
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="auto"/>
+                        <RowDefinition Height="*"/>
+                    </Grid.RowDefinitions>
+                   
+                   
+                    <Grid Grid.Row="1">
+                        <Grid.ColumnDefinitions>
+                            <ColumnDefinition></ColumnDefinition>
+                            <ColumnDefinition Width="auto"></ColumnDefinition>
+                        </Grid.ColumnDefinitions>
+                        <!--PDFViewer-->
+                        <Border x:Name="PDFGrid" Background="#CECECE"></Border>
+                        <!--右侧面板-->
+                        <Border Grid.Column="1" Grid.RowSpan="2" Name="PropertyContainer" Visibility="Collapsed"></Border>
+                    </Grid>
+
+                    <!--页码工具-->
+                    <cpdfcommon:PageNumberControl Grid.Row="1" Name="FloatPageTool" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,20"></cpdfcommon:PageNumberControl>
+                </Grid>
+            </Grid>
+        </Grid>
+
+        <Border Name="PopupBorder" Background="#A0000000" Visibility="Collapsed">
+            <Grid>
+
+                <!--文件信息-->
+                <Grid Name="FileInfoUI"  Width="422" Height="680" HorizontalAlignment="Center" VerticalAlignment="Center" Background="White" Visibility="Collapsed">
+                    <Grid.ColumnDefinitions>
+                        <ColumnDefinition Width="*"></ColumnDefinition>
+                        <ColumnDefinition Width="*"></ColumnDefinition>
+                    </Grid.ColumnDefinitions>
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="auto"></RowDefinition>
+                        <RowDefinition Height="*"></RowDefinition>
+                    </Grid.RowDefinitions>
+
+                    <TextBlock Width="50" Height="20" FontSize="14" LineHeight="16" Margin="12,6,0,0" HorizontalAlignment="Left">FileInfo:</TextBlock>
+                    <Button Grid.Column="1" Width="16" Height="16" HorizontalAlignment="Right" Margin="0,8,8,0" BorderThickness="0" Click="FileInfoCloseBtn_Click">
+                        <Button.Content>
+                            <Path Fill="Black">
+                                <Path.Data>
+                                    M6.69495 6L11.5 1.19495L10.805 0.5L6 5.30505L1.19495 0.5L0.5 1.19495L5.30505 6L0.5 10.805L1.19495 11.5L6 6.69495L10.805 11.5L11.5 10.805L6.69495 6Z
+                                </Path.Data>
+                            </Path>
+                        </Button.Content>
+                    </Button>
+                    <cpdftools:CPDFInfoControl Grid.Row="1" Margin="25,10,25,0" Grid.ColumnSpan="2" Name="FileInfoControl"></cpdftools:CPDFInfoControl>
+                </Grid>
+
+                <!--密码验证-->
+                <cpdfcommon:PasswordDialog x:Name="PasswordUI" Visibility="Collapsed"></cpdfcommon:PasswordDialog>
+            </Grid>
+
+        </Border>
+    </Grid>
+</Window>

File diff suppressed because it is too large
+ 870 - 0
Demo/Example/Annotations/MainWindow.xaml.cs


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/PDFA/sRGB2014.icc → Demo/Example/Annotations/PDFA/sRGB2014.icc


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/Properties/AssemblyInfo.cs → Demo/Example/Annotations/Properties/AssemblyInfo.cs


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/Properties/Resources.Designer.cs → Demo/Example/Annotations/Properties/Resources.Designer.cs


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/Properties/Resources.resx → Demo/Example/Annotations/Properties/Resources.resx


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/Properties/Settings.Designer.cs → Demo/Example/Annotations/Properties/Settings.Designer.cs


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/Properties/Settings.settings → Demo/Example/Annotations/Properties/Settings.settings


compdfkit_demo_windows/compdfkit/SDKLicense.xml → Demo/Example/Annotations/SDKLicense.xml


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/ComPDFKit.Desk.dll → Demo/Example/Annotations/bin/Debug/ComPDFKit.Desk.dll


compdfkit_demo_windows/compdfkit/edit-ctrl-demo/ComPDFKit.Viewer.dll → Demo/Example/Annotations/bin/Debug/ComPDFKit.Viewer.dll


BIN
Demo/Example/Annotations/bin/Debug/ComPDFKit/CustomStamp/52d922cd-904b-4032-812f-16d390702658


BIN
Demo/Example/Annotations/bin/Debug/ComPDFKit/CustomStamp/f892fd78-7b44-480e-8725-13a8040ef311


BIN
Demo/Example/Annotations/bin/Debug/ComPDFKit/Signature/0725ebbf-6735-45e0-8c86-3c0d232a4058


BIN
Demo/Example/Annotations/bin/Debug/ComPDFKit/Signature/45d696f7-10c9-403c-97e9-6f06d7e8d53f


BIN
Demo/Example/Annotations/bin/Debug/ComPDFKit/Signature/5ef70c6c-a690-41a1-865e-034c5e5d4e8c


BIN
Demo/Example/Annotations/bin/Debug/ComPDFKit/Signature/72ced746-5e7e-4c46-92d3-6bab5aba18cf


compdfkit_demo_windows/compdfkit/edit-ctrl-demo/PDFA/sRGB2014.icc → Demo/Example/Annotations/bin/Debug/PDFA/sRGB2014.icc


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/SDKLicense.xml → Demo/Example/Annotations/bin/Debug/SDKLicense.xml


compdfkit_demo_windows/compdfkit/compdfkit-tools/VirtualizingWrapPanel.dll → Demo/Example/Annotations/bin/Debug/VirtualizingWrapPanel.dll


BIN
Demo/Example/Annotations/bin/Debug/com.compdfkit.demo.annotation.exe


+ 6 - 0
Demo/Example/Annotations/bin/Debug/com.compdfkit.demo.annotation.exe.config

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <startup> 
+        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" />
+    </startup>
+</configuration>

BIN
Demo/Example/Annotations/bin/Debug/com.compdfkit.demo.annotation.pdb


BIN
Demo/Example/Annotations/bin/Debug/com.compdfkit.tools.dll


compdfkit_demo_windows/compdfkit/compdfkit-tools/app.config → Demo/Example/Annotations/bin/Debug/com.compdfkit.tools.dll.config


BIN
Demo/Example/Annotations/bin/Debug/com.compdfkit.tools.pdb


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/developer_guide_windows.pdf → Demo/Example/Annotations/bin/Debug/developer_guide_windows.pdf


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/x64/ComPDFKit.dll → Demo/Example/Annotations/bin/Debug/x64/ComPDFKit.dll


compdfkit_demo_windows/compdfkit/annotation-ctrl-demo/x86/ComPDFKit.dll → Demo/Example/Annotations/bin/Debug/x86/ComPDFKit.dll


compdfkit_demo_windows/compdfkit/compdfkit/developer_guide_windows.pdf → Demo/Example/Annotations/developer_guide_windows.pdf


+ 4 - 0
Demo/Example/Annotations/obj/Debug/.NETFramework,Version=v4.6.2.AssemblyAttributes.cs

@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.6.2", FrameworkDisplayName = ".NET Framework 4.6.2")]

+ 4 - 0
Demo/Example/Annotations/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs

@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]

BIN
Demo/Example/Annotations/obj/Debug/Annotations.csproj.AssemblyReference.cache


+ 0 - 0
Demo/Example/Annotations/obj/Debug/Annotations.csproj.CopyComplete


+ 1 - 0
Demo/Example/Annotations/obj/Debug/Annotations.csproj.CoreCompileInputs.cache

@@ -0,0 +1 @@
+3a7c10bca7724e86608e0f0b683c27c9bdaf0d82

+ 90 - 0
Demo/Example/Annotations/obj/Debug/Annotations.csproj.FileListAbsolute.txt

@@ -0,0 +1,90 @@
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\VirtualizingWrapPanel.dll
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\ComPDFKit.Desk.dll
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\SDKLicense.xml
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\developer_guide_windows.pdf
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\PDFA\sRGB2014.icc
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\x64\ComPDFKit.dll
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\x86\ComPDFKit.dll
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.demo.annotation.exe.config
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.demo.annotation.exe
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.demo.annotation.pdb
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.tools.dll
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\ComPDFKit.Viewer.dll
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.tools.pdb
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.tools.dll.config
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\Annotations.csproj.AssemblyReference.cache
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\Annotations.csproj.SuggestedBindingRedirects.cache
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\MainWindow.g.cs
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\App.g.cs
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation_Content.g.cs
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation_MarkupCompile.cache
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation_MarkupCompile.lref
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\App.baml
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\MainWindow.baml
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation.g.resources
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\annotation_ctrl_demo.Properties.Resources.resources
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\Annotations.csproj.GenerateResource.cache
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\Annotations.csproj.CoreCompileInputs.cache
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\Annotations.csproj.CopyComplete
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation.exe
+E:\workspace\Demo-Main\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation.pdb
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\VirtualizingWrapPanel.dll
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\ComPDFKit.Desk.dll
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\SDKLicense.xml
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\x64\ComPDFKit.dll
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\x86\ComPDFKit.dll
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\developer_guide_windows.pdf
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\PDFA\sRGB2014.icc
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\com.compdfkit.demo.annotation.exe.config
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\com.compdfkit.demo.annotation.exe
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\com.compdfkit.demo.annotation.pdb
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\com.compdfkit.tools.dll
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\ComPDFKit.Viewer.dll
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\com.compdfkit.tools.pdb
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\bin\Debug\com.compdfkit.tools.dll.config
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\Annotations.csproj.AssemblyReference.cache
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\Annotations.csproj.SuggestedBindingRedirects.cache
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\MainWindow.g.cs
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\App.g.cs
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation_Content.g.cs
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation_MarkupCompile.cache
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation_MarkupCompile.lref
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\App.baml
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\MainWindow.baml
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation.g.resources
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\annotation_ctrl_demo.Properties.Resources.resources
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\Annotations.csproj.GenerateResource.cache
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\Annotations.csproj.CoreCompileInputs.cache
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\Annotations.csproj.CopyComplete
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation.exe
+E:\workspace\Demo-Main\Demo\Example\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation.pdb
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\VirtualizingWrapPanel.dll
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\ComPDFKit.Desk.dll
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\SDKLicense.xml
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\x64\ComPDFKit.dll
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\x86\ComPDFKit.dll
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\developer_guide_windows.pdf
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\PDFA\sRGB2014.icc
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\com.compdfkit.demo.annotation.exe.config
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\com.compdfkit.demo.annotation.exe
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\com.compdfkit.demo.annotation.pdb
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\com.compdfkit.tools.dll
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\ComPDFKit.Viewer.dll
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\com.compdfkit.tools.pdb
+E:\workspace\Demo-Main\Demo\Example\Annotations\bin\Debug\com.compdfkit.tools.dll.config
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\Annotations.csproj.AssemblyReference.cache
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\Annotations.csproj.SuggestedBindingRedirects.cache
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\MainWindow.g.cs
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\App.g.cs
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\com.compdfkit.demo.annotation_Content.g.cs
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\com.compdfkit.demo.annotation_MarkupCompile.cache
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\com.compdfkit.demo.annotation_MarkupCompile.lref
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\App.baml
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\MainWindow.baml
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\com.compdfkit.demo.annotation.g.resources
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\annotation_ctrl_demo.Properties.Resources.resources
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\Annotations.csproj.GenerateResource.cache
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\Annotations.csproj.CoreCompileInputs.cache
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\Annotations.csproj.CopyComplete
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\com.compdfkit.demo.annotation.exe
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\com.compdfkit.demo.annotation.pdb

BIN
Demo/Example/Annotations/obj/Debug/Annotations.csproj.GenerateResource.cache


+ 0 - 0
Demo/Example/Annotations/obj/Debug/Annotations.csproj.SuggestedBindingRedirects.cache


BIN
Demo/Example/Annotations/obj/Debug/App.baml


+ 83 - 0
Demo/Example/Annotations/obj/Debug/App.g.cs

@@ -0,0 +1,83 @@
+#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "7AE4DA4FA713D418EE211E444F1B42D6C5120AE1B73F08ED868F3C3808FD7F0A"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using annotation_ctrl_demo;
+
+
+namespace annotation_ctrl_demo {
+    
+    
+    /// <summary>
+    /// App
+    /// </summary>
+    public partial class App : System.Windows.Application {
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            
+            #line 5 "..\..\App.xaml"
+            this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
+            
+            #line default
+            #line hidden
+            System.Uri resourceLocater = new System.Uri("/com.compdfkit.demo.annotation;component/app.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\App.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        /// <summary>
+        /// Application Entry Point.
+        /// </summary>
+        [System.STAThreadAttribute()]
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public static void Main() {
+            annotation_ctrl_demo.App app = new annotation_ctrl_demo.App();
+            app.InitializeComponent();
+            app.Run();
+        }
+    }
+}
+

+ 83 - 0
Demo/Example/Annotations/obj/Debug/App.g.i.cs

@@ -0,0 +1,83 @@
+#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "7AE4DA4FA713D418EE211E444F1B42D6C5120AE1B73F08ED868F3C3808FD7F0A"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using annotation_ctrl_demo;
+
+
+namespace annotation_ctrl_demo {
+    
+    
+    /// <summary>
+    /// App
+    /// </summary>
+    public partial class App : System.Windows.Application {
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            
+            #line 5 "..\..\App.xaml"
+            this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
+            
+            #line default
+            #line hidden
+            System.Uri resourceLocater = new System.Uri("/com.compdfkit.demo.annotation;component/app.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\App.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        /// <summary>
+        /// Application Entry Point.
+        /// </summary>
+        [System.STAThreadAttribute()]
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public static void Main() {
+            annotation_ctrl_demo.App app = new annotation_ctrl_demo.App();
+            app.InitializeComponent();
+            app.Run();
+        }
+    }
+}
+

BIN
Demo/Example/Annotations/obj/Debug/DesignTimeResolveAssemblyReferences.cache


BIN
Demo/Example/Annotations/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache


+ 62 - 0
Demo/Example/Annotations/obj/Debug/GeneratedInternalTypeHelper.g.i.cs

@@ -0,0 +1,62 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace XamlGeneratedNamespace {
+    
+    
+    /// <summary>
+    /// GeneratedInternalTypeHelper
+    /// </summary>
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+    public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
+        
+        /// <summary>
+        /// CreateInstance
+        /// </summary>
+        protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
+            return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic) 
+                            | (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
+        }
+        
+        /// <summary>
+        /// GetPropertyValue
+        /// </summary>
+        protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
+            return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
+        }
+        
+        /// <summary>
+        /// SetPropertyValue
+        /// </summary>
+        protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
+            propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
+        }
+        
+        /// <summary>
+        /// CreateDelegate
+        /// </summary>
+        protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
+            return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod 
+                            | (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
+                        delegateType,
+                        handler}, null)));
+        }
+        
+        /// <summary>
+        /// AddEventHandler
+        /// </summary>
+        protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
+            eventInfo.AddEventHandler(target, handler);
+        }
+    }
+}
+

BIN
Demo/Example/Annotations/obj/Debug/MainWindow.baml


+ 378 - 0
Demo/Example/Annotations/obj/Debug/MainWindow.g.cs

@@ -0,0 +1,378 @@
+#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "247CDAC146E194B3C6B377CA10BA1D1C3687E24D38688A4462E116EF93A62561"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using Annotations;
+using Compdfkit_Tools.Common;
+using Compdfkit_Tools.PDFControl;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace Annotations {
+    
+    
+    /// <summary>
+    /// MainWindow
+    /// </summary>
+    public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
+        
+        
+        #line 88 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Primitives.ToggleButton ToolExpandBtn;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 126 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.PDFControl.CPDFScalingControl CPDFSaclingControl;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 156 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Primitives.ToggleButton AnnotationBarBtn;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 170 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Primitives.ToggleButton ViewSettingBtn;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 212 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Grid BodyGrid;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 225 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border ToolBarContainer;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 227 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.PDFControl.CPDFAnnotationBarControl AnnotationBarControl;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 230 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button UndoBtn;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 232 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Shapes.Path UndoPath;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 284 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.PDFControl.CPDFBOTABarControl BotaSideTool;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 286 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.GridSplitter Splitter;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 315 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border PDFGrid;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 317 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border PropertyContainer;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 321 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.Common.PageNumberControl FloatPageTool;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 326 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border PopupBorder;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 330 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Grid FileInfoUI;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 350 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.PDFControl.CPDFInfoControl FileInfoControl;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 354 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.Common.PasswordDialog PasswordUI;
+        
+        #line default
+        #line hidden
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            System.Uri resourceLocater = new System.Uri("/com.compdfkit.demo.annotation;component/mainwindow.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\MainWindow.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+            switch (connectionId)
+            {
+            case 1:
+            
+            #line 10 "..\..\MainWindow.xaml"
+            ((Annotations.MainWindow)(target)).Loaded += new System.Windows.RoutedEventHandler(this.MainWindow_Loaded);
+            
+            #line default
+            #line hidden
+            return;
+            case 2:
+            
+            #line 40 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.OpenFile_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 3:
+            
+            #line 71 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.SaveFileBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 4:
+            this.ToolExpandBtn = ((System.Windows.Controls.Primitives.ToggleButton)(target));
+            
+            #line 88 "..\..\MainWindow.xaml"
+            this.ToolExpandBtn.Click += new System.Windows.RoutedEventHandler(this.ToolExpand_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 5:
+            this.CPDFSaclingControl = ((Compdfkit_Tools.PDFControl.CPDFScalingControl)(target));
+            return;
+            case 6:
+            
+            #line 130 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.ComboBox)(target)).SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.ComboBox_SelectionChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 7:
+            
+            #line 139 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.ExpandSearchBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 8:
+            this.AnnotationBarBtn = ((System.Windows.Controls.Primitives.ToggleButton)(target));
+            
+            #line 156 "..\..\MainWindow.xaml"
+            this.AnnotationBarBtn.Click += new System.Windows.RoutedEventHandler(this.AnnotationBarControl_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 9:
+            this.ViewSettingBtn = ((System.Windows.Controls.Primitives.ToggleButton)(target));
+            
+            #line 170 "..\..\MainWindow.xaml"
+            this.ViewSettingBtn.Click += new System.Windows.RoutedEventHandler(this.ViewSettingBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 10:
+            
+            #line 191 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.PageInfoBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 11:
+            this.BodyGrid = ((System.Windows.Controls.Grid)(target));
+            return;
+            case 12:
+            this.ToolBarContainer = ((System.Windows.Controls.Border)(target));
+            return;
+            case 13:
+            this.AnnotationBarControl = ((Compdfkit_Tools.PDFControl.CPDFAnnotationBarControl)(target));
+            
+            #line 227 "..\..\MainWindow.xaml"
+            this.AnnotationBarControl.Loaded += new System.Windows.RoutedEventHandler(this.AnnotationBarControl_Loaded);
+            
+            #line default
+            #line hidden
+            
+            #line 227 "..\..\MainWindow.xaml"
+            this.AnnotationBarControl.Unloaded += new System.Windows.RoutedEventHandler(this.AnnotationBarControl_Unloaded);
+            
+            #line default
+            #line hidden
+            return;
+            case 14:
+            this.UndoBtn = ((System.Windows.Controls.Button)(target));
+            
+            #line 230 "..\..\MainWindow.xaml"
+            this.UndoBtn.Click += new System.Windows.RoutedEventHandler(this.UndoButton_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 15:
+            this.UndoPath = ((System.Windows.Shapes.Path)(target));
+            return;
+            case 16:
+            
+            #line 256 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.RedoButton_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 17:
+            this.BotaSideTool = ((Compdfkit_Tools.PDFControl.CPDFBOTABarControl)(target));
+            return;
+            case 18:
+            this.Splitter = ((System.Windows.Controls.GridSplitter)(target));
+            return;
+            case 19:
+            this.PDFGrid = ((System.Windows.Controls.Border)(target));
+            return;
+            case 20:
+            this.PropertyContainer = ((System.Windows.Controls.Border)(target));
+            return;
+            case 21:
+            this.FloatPageTool = ((Compdfkit_Tools.Common.PageNumberControl)(target));
+            return;
+            case 22:
+            this.PopupBorder = ((System.Windows.Controls.Border)(target));
+            return;
+            case 23:
+            this.FileInfoUI = ((System.Windows.Controls.Grid)(target));
+            return;
+            case 24:
+            
+            #line 341 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.FileInfoCloseBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 25:
+            this.FileInfoControl = ((Compdfkit_Tools.PDFControl.CPDFInfoControl)(target));
+            return;
+            case 26:
+            this.PasswordUI = ((Compdfkit_Tools.Common.PasswordDialog)(target));
+            return;
+            }
+            this._contentLoaded = true;
+        }
+    }
+}
+

+ 378 - 0
Demo/Example/Annotations/obj/Debug/MainWindow.g.i.cs

@@ -0,0 +1,378 @@
+#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "247CDAC146E194B3C6B377CA10BA1D1C3687E24D38688A4462E116EF93A62561"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using Annotations;
+using Compdfkit_Tools.Common;
+using Compdfkit_Tools.PDFControl;
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+
+
+namespace Annotations {
+    
+    
+    /// <summary>
+    /// MainWindow
+    /// </summary>
+    public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
+        
+        
+        #line 88 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Primitives.ToggleButton ToolExpandBtn;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 126 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.PDFControl.CPDFScalingControl CPDFSaclingControl;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 156 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Primitives.ToggleButton AnnotationBarBtn;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 170 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Primitives.ToggleButton ViewSettingBtn;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 212 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Grid BodyGrid;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 225 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border ToolBarContainer;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 227 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.PDFControl.CPDFAnnotationBarControl AnnotationBarControl;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 230 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button UndoBtn;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 232 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Shapes.Path UndoPath;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 284 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.PDFControl.CPDFBOTABarControl BotaSideTool;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 286 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.GridSplitter Splitter;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 315 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border PDFGrid;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 317 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border PropertyContainer;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 321 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.Common.PageNumberControl FloatPageTool;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 326 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border PopupBorder;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 330 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Grid FileInfoUI;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 350 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.PDFControl.CPDFInfoControl FileInfoControl;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 354 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal Compdfkit_Tools.Common.PasswordDialog PasswordUI;
+        
+        #line default
+        #line hidden
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            System.Uri resourceLocater = new System.Uri("/com.compdfkit.demo.annotation;component/mainwindow.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\MainWindow.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+            switch (connectionId)
+            {
+            case 1:
+            
+            #line 10 "..\..\MainWindow.xaml"
+            ((Annotations.MainWindow)(target)).Loaded += new System.Windows.RoutedEventHandler(this.MainWindow_Loaded);
+            
+            #line default
+            #line hidden
+            return;
+            case 2:
+            
+            #line 40 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.OpenFile_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 3:
+            
+            #line 71 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.SaveFileBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 4:
+            this.ToolExpandBtn = ((System.Windows.Controls.Primitives.ToggleButton)(target));
+            
+            #line 88 "..\..\MainWindow.xaml"
+            this.ToolExpandBtn.Click += new System.Windows.RoutedEventHandler(this.ToolExpand_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 5:
+            this.CPDFSaclingControl = ((Compdfkit_Tools.PDFControl.CPDFScalingControl)(target));
+            return;
+            case 6:
+            
+            #line 130 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.ComboBox)(target)).SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.ComboBox_SelectionChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 7:
+            
+            #line 139 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.ExpandSearchBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 8:
+            this.AnnotationBarBtn = ((System.Windows.Controls.Primitives.ToggleButton)(target));
+            
+            #line 156 "..\..\MainWindow.xaml"
+            this.AnnotationBarBtn.Click += new System.Windows.RoutedEventHandler(this.AnnotationBarControl_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 9:
+            this.ViewSettingBtn = ((System.Windows.Controls.Primitives.ToggleButton)(target));
+            
+            #line 170 "..\..\MainWindow.xaml"
+            this.ViewSettingBtn.Click += new System.Windows.RoutedEventHandler(this.ViewSettingBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 10:
+            
+            #line 191 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.PageInfoBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 11:
+            this.BodyGrid = ((System.Windows.Controls.Grid)(target));
+            return;
+            case 12:
+            this.ToolBarContainer = ((System.Windows.Controls.Border)(target));
+            return;
+            case 13:
+            this.AnnotationBarControl = ((Compdfkit_Tools.PDFControl.CPDFAnnotationBarControl)(target));
+            
+            #line 227 "..\..\MainWindow.xaml"
+            this.AnnotationBarControl.Loaded += new System.Windows.RoutedEventHandler(this.AnnotationBarControl_Loaded);
+            
+            #line default
+            #line hidden
+            
+            #line 227 "..\..\MainWindow.xaml"
+            this.AnnotationBarControl.Unloaded += new System.Windows.RoutedEventHandler(this.AnnotationBarControl_Unloaded);
+            
+            #line default
+            #line hidden
+            return;
+            case 14:
+            this.UndoBtn = ((System.Windows.Controls.Button)(target));
+            
+            #line 230 "..\..\MainWindow.xaml"
+            this.UndoBtn.Click += new System.Windows.RoutedEventHandler(this.UndoButton_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 15:
+            this.UndoPath = ((System.Windows.Shapes.Path)(target));
+            return;
+            case 16:
+            
+            #line 256 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.RedoButton_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 17:
+            this.BotaSideTool = ((Compdfkit_Tools.PDFControl.CPDFBOTABarControl)(target));
+            return;
+            case 18:
+            this.Splitter = ((System.Windows.Controls.GridSplitter)(target));
+            return;
+            case 19:
+            this.PDFGrid = ((System.Windows.Controls.Border)(target));
+            return;
+            case 20:
+            this.PropertyContainer = ((System.Windows.Controls.Border)(target));
+            return;
+            case 21:
+            this.FloatPageTool = ((Compdfkit_Tools.Common.PageNumberControl)(target));
+            return;
+            case 22:
+            this.PopupBorder = ((System.Windows.Controls.Border)(target));
+            return;
+            case 23:
+            this.FileInfoUI = ((System.Windows.Controls.Grid)(target));
+            return;
+            case 24:
+            
+            #line 341 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.FileInfoCloseBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 25:
+            this.FileInfoControl = ((Compdfkit_Tools.PDFControl.CPDFInfoControl)(target));
+            return;
+            case 26:
+            this.PasswordUI = ((Compdfkit_Tools.Common.PasswordDialog)(target));
+            return;
+            }
+            this._contentLoaded = true;
+        }
+    }
+}
+

+ 135 - 0
Demo/Example/Annotations/obj/Debug/PasswordDialog.g.i.cs

@@ -0,0 +1,135 @@
+#pragma checksum "..\..\PasswordDialog.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "D3B43EDE9A8AFB40BC754F12C5F72A42901EABCBA6524D4E67431F20C7644CA1"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using viewer_ctrl_demo;
+
+
+namespace viewer_ctrl_demo {
+    
+    
+    /// <summary>
+    /// PasswordDialog
+    /// </summary>
+    public partial class PasswordDialog : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+        
+        
+        #line 45 "..\..\PasswordDialog.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.TextBlock FileEncryptText;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 50 "..\..\PasswordDialog.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.PasswordBox PasswordBoxText;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 51 "..\..\PasswordDialog.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.TextBlock ErrorTipsText;
+        
+        #line default
+        #line hidden
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            System.Uri resourceLocater = new System.Uri("/com.compdfkit.demo.annotation;component/passworddialog.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\PasswordDialog.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+            switch (connectionId)
+            {
+            case 1:
+            
+            #line 23 "..\..\PasswordDialog.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.PasswordDialogClose_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 2:
+            this.FileEncryptText = ((System.Windows.Controls.TextBlock)(target));
+            return;
+            case 3:
+            this.PasswordBoxText = ((System.Windows.Controls.PasswordBox)(target));
+            return;
+            case 4:
+            this.ErrorTipsText = ((System.Windows.Controls.TextBlock)(target));
+            return;
+            case 5:
+            
+            #line 57 "..\..\PasswordDialog.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.PasswordDialogConfirm_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 6:
+            
+            #line 58 "..\..\PasswordDialog.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.PasswordDialogCancel_Click);
+            
+            #line default
+            #line hidden
+            return;
+            }
+            this._contentLoaded = true;
+        }
+    }
+}
+

BIN
Demo/Example/Annotations/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll


BIN
Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.AssemblyReference.cache


+ 0 - 0
Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.CopyComplete


+ 1 - 0
Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.CoreCompileInputs.cache

@@ -0,0 +1 @@
+f41ed0b7d5a844089d5489966a8610d85c515c82

+ 30 - 0
Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.FileListAbsolute.txt

@@ -0,0 +1,30 @@
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\VirtualizingWrapPanel.dll
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\x64\ComPDFKit.dll
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\x86\ComPDFKit.dll
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.demo.annotation.exe.config
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.demo.annotation.exe
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.demo.annotation.pdb
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.tools.dll
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\ComPDFKit.Desk.dll
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\ComPDFKit.Viewer.dll
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.tools.pdb
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\annotation-ctrl-demo.csproj.AssemblyReference.cache
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\annotation-ctrl-demo.csproj.SuggestedBindingRedirects.cache
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\MainWindow.g.cs
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\App.g.cs
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation_Content.g.cs
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation_MarkupCompile.cache
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation_MarkupCompile.lref
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\App.baml
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\MainWindow.baml
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation.g.resources
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\annotation_ctrl_demo.Properties.Resources.resources
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\annotation-ctrl-demo.csproj.GenerateResource.cache
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\annotation-ctrl-demo.csproj.CoreCompileInputs.cache
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\annotation-ctrl-demo.csproj.CopyComplete
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation.exe
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Debug\com.compdfkit.demo.annotation.pdb
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\com.compdfkit.tools.dll.config
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\developer_guide_windows.pdf
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\PDFA\sRGB2014.icc
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\bin\Debug\SDKLicense.xml

BIN
Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.GenerateResource.cache


+ 0 - 0
Demo/Example/Annotations/obj/Debug/annotation-ctrl-demo.csproj.SuggestedBindingRedirects.cache


BIN
Demo/Example/Annotations/obj/Debug/annotation_ctrl_demo.Properties.Resources.resources


BIN
Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation.exe


BIN
Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation.g.resources


BIN
Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation.pdb


+ 17 - 0
Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_Content.g.cs

@@ -0,0 +1,17 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("compdfkit.desk.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("compdfkit.viewer.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("sdklicense.xml")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("x64/compdfkit.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("x86/compdfkit.dll")]
+
+

+ 17 - 0
Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_Content.g.i.cs

@@ -0,0 +1,17 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("compdfkit.desk.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("compdfkit.viewer.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("sdklicense.xml")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("x64/compdfkit.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("x86/compdfkit.dll")]
+
+

+ 20 - 0
Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_MarkupCompile.cache

@@ -0,0 +1,20 @@
+com.compdfkit.demo.annotation
+
+
+winexe
+C#
+.cs
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\
+annotation_ctrl_demo
+none
+false
+DEBUG;TRACE
+E:\workspace\Demo-Main\Demo\Example\Annotations\App.xaml
+1219584333
+51125674053
+51579654133
+19-1515689047
+MainWindow.xaml;
+
+False
+

+ 20 - 0
Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_MarkupCompile.i.cache

@@ -0,0 +1,20 @@
+com.compdfkit.demo.annotation
+
+
+winexe
+C#
+.cs
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\
+annotation_ctrl_demo
+none
+false
+DEBUG;TRACE
+E:\workspace\Demo-Main\Demo\Example\Annotations\App.xaml
+1219584333
+51125674053
+6989518640
+19-1515689047
+MainWindow.xaml;
+
+True
+

+ 4 - 0
Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_MarkupCompile.i.lref

@@ -0,0 +1,4 @@
+E:\workspace\Demo-Main\Demo\Example\Annotations\obj\Debug\GeneratedInternalTypeHelper.g.i.cs
+FE:\workspace\Demo-Main\Demo\Example\Annotations\App.xaml;;
+FE:\workspace\Demo-Main\Demo\Example\Annotations\MainWindow.xaml;;
+

+ 4 - 0
Demo/Example/Annotations/obj/Debug/com.compdfkit.demo.annotation_MarkupCompile.lref

@@ -0,0 +1,4 @@
+
+FE:\workspace\Demo-Main\Demo\Example\Annotations\App.xaml;;
+FE:\workspace\Demo-Main\Demo\Example\Annotations\MainWindow.xaml;;
+

+ 4 - 0
Demo/Example/Annotations/obj/Release/.NETFramework,Version=v4.8.AssemblyAttributes.cs

@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]

+ 83 - 0
Demo/Example/Annotations/obj/Release/App.g.cs

@@ -0,0 +1,83 @@
+#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "2E714AC862B2271248C2C4C55D344DBEE9B6F6771D52F769699CB32AB2B7328C"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using annotation_ctrl_demo;
+
+
+namespace annotation_ctrl_demo {
+    
+    
+    /// <summary>
+    /// App
+    /// </summary>
+    public partial class App : System.Windows.Application {
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            
+            #line 5 "..\..\App.xaml"
+            this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
+            
+            #line default
+            #line hidden
+            System.Uri resourceLocater = new System.Uri("/com.compdfkit.demo.annotation;component/app.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\App.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        /// <summary>
+        /// Application Entry Point.
+        /// </summary>
+        [System.STAThreadAttribute()]
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public static void Main() {
+            annotation_ctrl_demo.App app = new annotation_ctrl_demo.App();
+            app.InitializeComponent();
+            app.Run();
+        }
+    }
+}
+

+ 83 - 0
Demo/Example/Annotations/obj/Release/App.g.i.cs

@@ -0,0 +1,83 @@
+#pragma checksum "..\..\App.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "2E714AC862B2271248C2C4C55D344DBEE9B6F6771D52F769699CB32AB2B7328C"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using annotation_ctrl_demo;
+
+
+namespace annotation_ctrl_demo {
+    
+    
+    /// <summary>
+    /// App
+    /// </summary>
+    public partial class App : System.Windows.Application {
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            
+            #line 5 "..\..\App.xaml"
+            this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
+            
+            #line default
+            #line hidden
+            System.Uri resourceLocater = new System.Uri("/com.compdfkit.demo.annotation;component/app.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\App.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        /// <summary>
+        /// Application Entry Point.
+        /// </summary>
+        [System.STAThreadAttribute()]
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public static void Main() {
+            annotation_ctrl_demo.App app = new annotation_ctrl_demo.App();
+            app.InitializeComponent();
+            app.Run();
+        }
+    }
+}
+

BIN
Demo/Example/Annotations/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache


+ 62 - 0
Demo/Example/Annotations/obj/Release/GeneratedInternalTypeHelper.g.i.cs

@@ -0,0 +1,62 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace XamlGeneratedNamespace {
+    
+    
+    /// <summary>
+    /// GeneratedInternalTypeHelper
+    /// </summary>
+    [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+    [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+    public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
+        
+        /// <summary>
+        /// CreateInstance
+        /// </summary>
+        protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
+            return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic) 
+                            | (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
+        }
+        
+        /// <summary>
+        /// GetPropertyValue
+        /// </summary>
+        protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
+            return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
+        }
+        
+        /// <summary>
+        /// SetPropertyValue
+        /// </summary>
+        protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
+            propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
+        }
+        
+        /// <summary>
+        /// CreateDelegate
+        /// </summary>
+        protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
+            return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod 
+                            | (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
+                        delegateType,
+                        handler}, null)));
+        }
+        
+        /// <summary>
+        /// AddEventHandler
+        /// </summary>
+        protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
+            eventInfo.AddEventHandler(target, handler);
+        }
+    }
+}
+

+ 466 - 0
Demo/Example/Annotations/obj/Release/MainWindow.g.i.cs

@@ -0,0 +1,466 @@
+#pragma checksum "..\..\MainWindow.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "FCD38ABD303CA50BA507C80E94D65EEDA41DF98F50FE9B7125A1028E913E7A38"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using compdfkit_tools.PDFControl;
+using viewer_ctrl_demo;
+
+
+namespace viewer_ctrl_demo {
+    
+    
+    /// <summary>
+    /// MainWindow
+    /// </summary>
+    public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
+        
+        
+        #line 116 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox ZoomComboBox;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 119 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.TextBox ZoomTextBox;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 216 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Grid BodyGrid;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 229 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Grid ExpandToolContainer;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 235 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.StackPanel BotaSideTool;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 238 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Primitives.ToggleButton ThumbToolButton;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 250 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Primitives.ToggleButton OutlineToolButton;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 261 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Primitives.ToggleButton BookmarkToolButton;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 272 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Primitives.ToggleButton SearchToolButton;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 287 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border BotaToolContainer;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 293 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.GridSplitter Splitter;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 318 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal compdfkit_tools.PDFControl.CPDFAnnotationBarControl AnnotationBarControl;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 320 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border PDFGrid;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 325 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border FloatPageTool;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 347 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.TextBlock PageRangeText;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 366 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border PropertyContainer;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 370 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Border PopupBorder;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 374 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Grid FileInfoUI;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 394 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal compdfkit_tools.PDFControl.CPDFInfoControl FileInfoControl;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 398 "..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal viewer_ctrl_demo.PasswordDialog PasswordUI;
+        
+        #line default
+        #line hidden
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            System.Uri resourceLocater = new System.Uri("/com.compdfkit.demo.annotation;component/mainwindow.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\MainWindow.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal System.Delegate _CreateDelegate(System.Type delegateType, string handler) {
+            return System.Delegate.CreateDelegate(delegateType, this, handler);
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+            switch (connectionId)
+            {
+            case 1:
+            
+            #line 9 "..\..\MainWindow.xaml"
+            ((viewer_ctrl_demo.MainWindow)(target)).Loaded += new System.Windows.RoutedEventHandler(this.MainWindow_Loaded);
+            
+            #line default
+            #line hidden
+            return;
+            case 2:
+            
+            #line 38 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.OpenFile_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 3:
+            
+            #line 66 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.SaveFileBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 4:
+            
+            #line 80 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Primitives.ToggleButton)(target)).Click += new System.Windows.RoutedEventHandler(this.ToolExpand_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 5:
+            this.ZoomComboBox = ((System.Windows.Controls.ComboBox)(target));
+            
+            #line 117 "..\..\MainWindow.xaml"
+            this.ZoomComboBox.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.ZoomComboBox_SelectionChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 6:
+            this.ZoomTextBox = ((System.Windows.Controls.TextBox)(target));
+            return;
+            case 7:
+            
+            #line 128 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.ZoomOutBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 8:
+            
+            #line 134 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.ZoomInBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 9:
+            
+            #line 155 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.ExpandSearchBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 10:
+            
+            #line 169 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Primitives.ToggleButton)(target)).Click += new System.Windows.RoutedEventHandler(this.AnnotationBarControl_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 11:
+            
+            #line 180 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Primitives.ToggleButton)(target)).Click += new System.Windows.RoutedEventHandler(this.ViewSettingBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 12:
+            
+            #line 198 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.PageInfoBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 13:
+            this.BodyGrid = ((System.Windows.Controls.Grid)(target));
+            return;
+            case 14:
+            this.ExpandToolContainer = ((System.Windows.Controls.Grid)(target));
+            return;
+            case 15:
+            this.BotaSideTool = ((System.Windows.Controls.StackPanel)(target));
+            return;
+            case 16:
+            this.ThumbToolButton = ((System.Windows.Controls.Primitives.ToggleButton)(target));
+            
+            #line 238 "..\..\MainWindow.xaml"
+            this.ThumbToolButton.Click += new System.Windows.RoutedEventHandler(this.ThumbToolButton_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 17:
+            this.OutlineToolButton = ((System.Windows.Controls.Primitives.ToggleButton)(target));
+            
+            #line 250 "..\..\MainWindow.xaml"
+            this.OutlineToolButton.Click += new System.Windows.RoutedEventHandler(this.OutlineToolButton_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 18:
+            this.BookmarkToolButton = ((System.Windows.Controls.Primitives.ToggleButton)(target));
+            
+            #line 261 "..\..\MainWindow.xaml"
+            this.BookmarkToolButton.Click += new System.Windows.RoutedEventHandler(this.BookmarkToolButtonn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 19:
+            this.SearchToolButton = ((System.Windows.Controls.Primitives.ToggleButton)(target));
+            
+            #line 272 "..\..\MainWindow.xaml"
+            this.SearchToolButton.Click += new System.Windows.RoutedEventHandler(this.SearchToolButton_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 20:
+            this.BotaToolContainer = ((System.Windows.Controls.Border)(target));
+            return;
+            case 21:
+            this.Splitter = ((System.Windows.Controls.GridSplitter)(target));
+            return;
+            case 22:
+            this.AnnotationBarControl = ((compdfkit_tools.PDFControl.CPDFAnnotationBarControl)(target));
+            
+            #line 318 "..\..\MainWindow.xaml"
+            this.AnnotationBarControl.Loaded += new System.Windows.RoutedEventHandler(this.AnnotationBarControl_Loaded);
+            
+            #line default
+            #line hidden
+            
+            #line 318 "..\..\MainWindow.xaml"
+            this.AnnotationBarControl.Unloaded += new System.Windows.RoutedEventHandler(this.AnnotationBarControl_Unloaded);
+            
+            #line default
+            #line hidden
+            return;
+            case 23:
+            this.PDFGrid = ((System.Windows.Controls.Border)(target));
+            
+            #line 320 "..\..\MainWindow.xaml"
+            this.PDFGrid.MouseMove += new System.Windows.Input.MouseEventHandler(this.PDFGrid_MouseMove);
+            
+            #line default
+            #line hidden
+            return;
+            case 24:
+            
+            #line 323 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Border)(target)).MouseEnter += new System.Windows.Input.MouseEventHandler(this.Border_MouseEnter);
+            
+            #line default
+            #line hidden
+            return;
+            case 25:
+            this.FloatPageTool = ((System.Windows.Controls.Border)(target));
+            return;
+            case 26:
+            
+            #line 335 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Border)(target)).MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.PrevPageBorder_MouseLeftButtonDown);
+            
+            #line default
+            #line hidden
+            return;
+            case 27:
+            this.PageRangeText = ((System.Windows.Controls.TextBlock)(target));
+            return;
+            case 28:
+            
+            #line 350 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Border)(target)).MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(this.NextPageBorder_MouseLeftButtonDown);
+            
+            #line default
+            #line hidden
+            return;
+            case 29:
+            this.PropertyContainer = ((System.Windows.Controls.Border)(target));
+            return;
+            case 30:
+            this.PopupBorder = ((System.Windows.Controls.Border)(target));
+            return;
+            case 31:
+            this.FileInfoUI = ((System.Windows.Controls.Grid)(target));
+            return;
+            case 32:
+            
+            #line 385 "..\..\MainWindow.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.FileInfoCloseBtn_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 33:
+            this.FileInfoControl = ((compdfkit_tools.PDFControl.CPDFInfoControl)(target));
+            return;
+            case 34:
+            this.PasswordUI = ((viewer_ctrl_demo.PasswordDialog)(target));
+            return;
+            }
+            this._contentLoaded = true;
+        }
+    }
+}
+

+ 135 - 0
Demo/Example/Annotations/obj/Release/PasswordDialog.g.i.cs

@@ -0,0 +1,135 @@
+#pragma checksum "..\..\PasswordDialog.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "D3B43EDE9A8AFB40BC754F12C5F72A42901EABCBA6524D4E67431F20C7644CA1"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using viewer_ctrl_demo;
+
+
+namespace viewer_ctrl_demo {
+    
+    
+    /// <summary>
+    /// PasswordDialog
+    /// </summary>
+    public partial class PasswordDialog : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {
+        
+        
+        #line 45 "..\..\PasswordDialog.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.TextBlock FileEncryptText;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 50 "..\..\PasswordDialog.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.PasswordBox PasswordBoxText;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 51 "..\..\PasswordDialog.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.TextBlock ErrorTipsText;
+        
+        #line default
+        #line hidden
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            System.Uri resourceLocater = new System.Uri("/com.compdfkit.demo.annotation;component/passworddialog.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\PasswordDialog.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+            switch (connectionId)
+            {
+            case 1:
+            
+            #line 23 "..\..\PasswordDialog.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.PasswordDialogClose_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 2:
+            this.FileEncryptText = ((System.Windows.Controls.TextBlock)(target));
+            return;
+            case 3:
+            this.PasswordBoxText = ((System.Windows.Controls.PasswordBox)(target));
+            return;
+            case 4:
+            this.ErrorTipsText = ((System.Windows.Controls.TextBlock)(target));
+            return;
+            case 5:
+            
+            #line 57 "..\..\PasswordDialog.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.PasswordDialogConfirm_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 6:
+            
+            #line 58 "..\..\PasswordDialog.xaml"
+            ((System.Windows.Controls.Button)(target)).Click += new System.Windows.RoutedEventHandler(this.PasswordDialogCancel_Click);
+            
+            #line default
+            #line hidden
+            return;
+            }
+            this._contentLoaded = true;
+        }
+    }
+}
+

BIN
Demo/Example/Annotations/obj/Release/TempPE/Properties.Resources.Designer.cs.dll


BIN
Demo/Example/Annotations/obj/Release/annotation-ctrl-demo.csproj.AssemblyReference.cache


+ 0 - 0
Demo/Example/Annotations/obj/Release/build.force


+ 16 - 0
Demo/Example/Annotations/obj/Release/com.compdfkit.demo.annotation_Content.g.cs

@@ -0,0 +1,16 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("compdfkit.desk.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("compdfkit.viewer.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("x64/compdfkit.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("x86/compdfkit.dll")]
+
+

+ 16 - 0
Demo/Example/Annotations/obj/Release/com.compdfkit.demo.annotation_Content.g.i.cs

@@ -0,0 +1,16 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     此代码由工具生成。
+//     运行时版本:4.0.30319.42000
+//
+//     对此文件的更改可能会导致不正确的行为,并且如果
+//     重新生成代码,这些更改将会丢失。
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("compdfkit.desk.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("compdfkit.viewer.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("x64/compdfkit.dll")]
+[assembly: System.Windows.Resources.AssemblyAssociatedContentFileAttribute("x86/compdfkit.dll")]
+
+

+ 20 - 0
Demo/Example/Annotations/obj/Release/com.compdfkit.demo.annotation_MarkupCompile.i.cache

@@ -0,0 +1,20 @@
+com.compdfkit.demo.annotation
+
+
+winexe
+C#
+.cs
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Release\
+annotation_ctrl_demo
+none
+false
+TRACE
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\App.xaml
+2-2102874514
+4-1518199537
+7932467925
+17-126211457
+MainWindow.xaml;PasswordDialog.xaml;
+
+True
+

+ 5 - 0
Demo/Example/Annotations/obj/Release/com.compdfkit.demo.annotation_MarkupCompile.i.lref

@@ -0,0 +1,5 @@
+D:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\obj\Release\GeneratedInternalTypeHelper.g.i.cs
+FD:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\App.xaml;;
+FD:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\MainWindow.xaml;;
+FD:\Project\Work\NewDemo\compdfkit_demo_windows\compdfkit\annotation-ctrl-demo\PasswordDialog.xaml;;
+

compdfkit_demo_windows/compdfkit/compdfkit/x64/ComPDFKit.dll → Demo/Example/Annotations/x64/ComPDFKit.dll


compdfkit_demo_windows/compdfkit/compdfkit/x86/ComPDFKit.dll → Demo/Example/Annotations/x86/ComPDFKit.dll


File diff suppressed because it is too large
+ 82 - 0
Demo/Example/Compdfkit_Tools/Annotation/CPDFAnnotationPreviewerControl.xaml


+ 224 - 0
Demo/Example/Compdfkit_Tools/Annotation/CPDFAnnotationPreviewerControl.xaml.cs

@@ -0,0 +1,224 @@
+using Compdfkit_Tools.Data;
+using Compdfkit_Tools.Helper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Permissions;
+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.Ink;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using static Compdfkit_Tools.Helper.CommonHelper;
+
+namespace Compdfkit_Tools.PDFControl
+{
+    /// <summary>
+    /// CPDFAnnotationPreviewer.xaml 的交互逻辑
+    /// </summary>
+    public partial class CPDFAnnotationPreviewerControl : UserControl
+    {
+        public CPDFAnnotationPreviewerControl()
+        {
+            InitializeComponent();
+        }
+
+        public void CollapsedAll()
+        {
+            MarkupGrid.Visibility = Visibility.Collapsed;
+            HighlightPath.Visibility = Visibility.Collapsed;
+            UnderlinePath.Visibility = Visibility.Collapsed;
+            StrikeoutPath.Visibility = Visibility.Collapsed;
+            SquigglyPath.Visibility = Visibility.Collapsed;
+            FreehandGrid.Visibility = Visibility.Collapsed;
+            FreeTextGrid.Visibility = Visibility.Collapsed;
+            ShapeGrid.Visibility = Visibility.Collapsed;
+            Ellipse.Visibility = Visibility.Collapsed;
+            Rectangle.Visibility = Visibility.Collapsed;
+            Line.Visibility = Visibility.Collapsed;
+            NoteGrid.Visibility = Visibility.Collapsed;
+            StampGrid.Visibility = Visibility.Collapsed;
+        }
+
+        public void DrawMarkUpPreview(CPDFAnnotationData annotationData)
+        {
+            CPDFMarkupData markupData = annotationData as CPDFMarkupData;
+
+            CollapsedAll();
+            CPDFAnnotationType annotationType = annotationData.AnnotationType;
+            switch (annotationType)
+            {
+                case CPDFAnnotationType.Highlight:
+                    MarkupGrid.Visibility = Visibility.Visible;
+                    HighlightPath.Visibility = Visibility.Visible;
+                    HighlightPath.Stroke = new SolidColorBrush(markupData.Color);
+                    HighlightPath.Opacity = markupData.Opacity;
+                    break;
+
+                case CPDFAnnotationType.Underline:
+                    MarkupGrid.Visibility = Visibility.Visible;
+                    UnderlinePath.Visibility = Visibility.Visible;
+                    UnderlinePath.Stroke = new SolidColorBrush(markupData.Color);
+                    UnderlinePath.Opacity = markupData.Opacity;
+                    break;
+
+                case CPDFAnnotationType.Squiggly:
+                    MarkupGrid.Visibility = Visibility.Visible;
+                    SquigglyPath.Visibility = Visibility.Visible;
+                    SquigglyPath.Stroke = new SolidColorBrush(markupData.Color);
+                    SquigglyPath.Opacity = markupData.Opacity;
+                    break;
+
+                case CPDFAnnotationType.Strikeout:
+                    MarkupGrid.Visibility = Visibility.Visible;
+                    StrikeoutPath.Visibility = Visibility.Visible;
+                    StrikeoutPath.Stroke = new SolidColorBrush(markupData.Color);
+                    StrikeoutPath.Opacity = markupData.Opacity;
+                    break;
+            }
+        }
+
+        public void DrawShapePreview(CPDFAnnotationData annotationData)
+        {
+            CPDFAnnotationType annotationType = annotationData.AnnotationType;
+            switch (annotationType)
+            {
+                case CPDFAnnotationType.Circle:
+                    CPDFShapeData circleData = annotationData as CPDFShapeData;
+                    ShapeGrid.Visibility = Visibility.Visible;
+                    Ellipse.Visibility = Visibility.Visible;
+
+                    Ellipse.StrokeThickness = circleData.Thickness;
+                    Ellipse.Opacity = circleData.Opacity;
+                    Ellipse.Fill = new SolidColorBrush(circleData.FillColor);
+                    Ellipse.Stroke = new SolidColorBrush(circleData.BorderColor);
+                    DashStyle circleDash = new DashStyle();
+                    if (circleData.DashStyle.Dashes.Count == 2)
+                    {
+                        circleDash.Dashes.Add(circleData.DashStyle.Dashes[0] / Math.Max(Ellipse.StrokeThickness, 1));
+                        circleDash.Dashes.Add(circleData.DashStyle.Dashes[1] / Math.Max(Ellipse.StrokeThickness, 1));
+                    }
+                    Ellipse.StrokeDashArray = circleDash.Dashes;
+
+                    break;
+
+                case CPDFAnnotationType.Square:
+                    CPDFShapeData squareData = annotationData as CPDFShapeData;
+                    ShapeGrid.Visibility = Visibility.Visible;
+                    Rectangle.Visibility = Visibility.Visible;
+
+                    Rectangle.StrokeThickness = squareData.Thickness;
+                    Rectangle.Opacity = squareData.Opacity;
+                    Rectangle.Fill = new SolidColorBrush(squareData.FillColor);
+                    Rectangle.Stroke = new SolidColorBrush(squareData.BorderColor);
+                    DashStyle squareDash = new DashStyle();
+                    if (squareData.DashStyle.Dashes.Count == 2)
+                    {
+                        squareDash.Dashes.Add(squareData.DashStyle.Dashes[0] / Math.Max(Rectangle.StrokeThickness, 1));
+                        squareDash.Dashes.Add(squareData.DashStyle.Dashes[1] / Math.Max(Rectangle.StrokeThickness, 1));
+                    }
+                    Rectangle.StrokeDashArray = squareDash.Dashes;
+                    break;
+
+                case CPDFAnnotationType.Line:
+                case CPDFAnnotationType.Arrow:
+
+                    CPDFLineShapeData lineShapeData = annotationData as CPDFLineShapeData;
+                    ShapeGrid.Visibility = Visibility.Visible;
+                    Line.Visibility = Visibility.Visible;
+                    ArrowHelper arrowLine = new ArrowHelper();
+                    arrowLine.ArrowLength = 8;
+                    arrowLine.LineStart = new Point(20, 50);
+                    arrowLine.LineEnd = new Point(50, 20);
+                    arrowLine.StartSharp = lineShapeData.LineType.HeadLineType;
+                    arrowLine.EndSharp = lineShapeData.LineType.TailLineType;
+                    Line.Stroke = new SolidColorBrush(lineShapeData.BorderColor);
+                    Line.StrokeThickness = lineShapeData.Thickness;
+                    Line.Opacity = lineShapeData.Opacity;
+                    Line.Data = arrowLine.BuildArrowBody();
+                    DashStyle lineDash = new DashStyle();
+                    if (lineShapeData.DashStyle.Dashes.Count == 2)
+                    {
+                        lineDash.Dashes.Add(lineShapeData.DashStyle.Dashes[0] / Math.Max(Line.StrokeThickness, 1));
+                        lineDash.Dashes.Add(lineShapeData.DashStyle.Dashes[1] / Math.Max(Line.StrokeThickness, 1));
+                    }
+                    Line.StrokeDashArray = lineDash.Dashes;
+                    break;
+            }
+        }
+
+        public void DrawFreehandPreview(CPDFAnnotationData annotationData)
+        {
+            CPDFFreehandData freehandData = annotationData as CPDFFreehandData;
+
+            CollapsedAll();
+            FreehandGrid.Visibility = Visibility.Visible;
+            SharpPath.Stroke = new SolidColorBrush(freehandData.BorderColor);
+            SharpPath.Opacity = freehandData.Opacity;
+            SharpPath.StrokeThickness = freehandData.Thickness;
+        }
+
+        public void DrawNotePreview(CPDFAnnotationData annotationData)
+        {
+            CollapsedAll();
+            NoteGrid.Visibility = Visibility.Visible;
+            CPDFNoteData noteData = annotationData as CPDFNoteData;
+            NotePath.Fill = new SolidColorBrush(noteData.BorderColor);
+        }
+
+        public void DrawStampPreview(WriteableBitmap writeableBitmap)
+        {
+            CollapsedAll();
+            StampGrid.Visibility = Visibility.Visible;
+            StampImage.Source = writeableBitmap;
+        }
+        
+        public void DrawFreeTextPreview(CPDFFreeTextData freeTextData)
+        {
+            CollapsedAll();
+            FreeTextGrid.Visibility = Visibility.Visible;
+            
+            if (freeTextData.FontFamily == "Helvetica")
+            {
+                FreeText.FontFamily = new FontFamily("Arial");
+            }
+            else if (freeTextData.FontFamily == "Times")
+            {
+                FreeText.FontFamily = new FontFamily("Times New Roman");
+            }
+            else
+            {
+                FreeText.FontFamily = new FontFamily("Courier New");
+            }
+
+            //FreeText.FontFamily = new FontFamily(freeTextData.FontFamily);
+            FreeText.FontSize = freeTextData.FontSize/1.2;
+            FreeText.Foreground = new SolidColorBrush(freeTextData.BorderColor);
+            FreeText.Opacity = freeTextData.Opacity;
+            if (freeTextData.IsBold)
+            {
+                FreeText.FontWeight = FontWeights.Bold;
+            }
+            else
+            {
+                FreeText.FontWeight = FontWeights.Medium;
+            }
+
+            if (freeTextData.IsItalic)
+            {
+                FreeText.FontStyle = FontStyles.Italic;
+            }
+            else
+            {
+                FreeText.FontStyle = FontStyles.Normal;
+            }
+        }
+    }
+}

+ 385 - 0
Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationData/CPDFAnnotationData.cs

@@ -0,0 +1,385 @@
+using ComPDFKit.PDFAnnotation;
+using Compdfkit_Tools.PDFControl;
+using ComPDFKitViewer.AnnotEvent;
+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.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+
+namespace Compdfkit_Tools.Data
+{
+    public enum CPDFAnnotationType
+    {
+        Unknow = 0,
+        Highlight,
+        Underline,
+        Strikeout,
+        Squiggly,
+        FreeText,
+        Freehand,
+        Note,
+        Circle,
+        Square,
+        Arrow,
+        Line,
+        Stamp,
+        Signature,
+        Link,
+        Audio,
+        Image
+    }
+
+    public enum SignatureType
+    {
+        TextType,
+        Drawing,
+        ImageType
+    }
+
+    public class LineType : INotifyPropertyChanged
+    {
+        private C_LINE_TYPE _headLineType;
+        public C_LINE_TYPE HeadLineType
+        {
+            get { return _headLineType; }
+            set { _headLineType = value; OnPropertyChanged(nameof(HeadLineType)); }
+        }
+
+        private C_LINE_TYPE _tailLineType;
+        public C_LINE_TYPE TailLineType
+        {
+            get { return _tailLineType; }
+            set { _tailLineType = value; OnPropertyChanged(nameof(TailLineType)); }
+        }
+
+        public event PropertyChangedEventHandler PropertyChanged;
+
+        protected virtual void OnPropertyChanged(string propertyName)
+        {
+            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+        }
+    }
+
+    public static class CPDFAnnotationDictionary
+    {
+        public static Dictionary<string, CPDFAnnotationType> GetAnnotationFromTag = new Dictionary<string, CPDFAnnotationType>() {
+            { "Highlight", CPDFAnnotationType.Highlight },
+            { "Underline", CPDFAnnotationType.Underline },
+            { "Strikeout", CPDFAnnotationType.Strikeout },
+            { "Squiggly", CPDFAnnotationType.Squiggly },
+            { "Square", CPDFAnnotationType.Square },
+            { "Circle", CPDFAnnotationType.Circle },
+            { "Line", CPDFAnnotationType.Line },
+            { "Arrow", CPDFAnnotationType.Arrow },
+            { "Freehand", CPDFAnnotationType.Freehand },
+            { "FreeText", CPDFAnnotationType.FreeText },
+            { "Note", CPDFAnnotationType.Note },
+            { "Stamp", CPDFAnnotationType.Stamp },
+            { "Signature", CPDFAnnotationType.Signature },
+            { "Link", CPDFAnnotationType.Link },
+            {"Audio", CPDFAnnotationType.Audio },
+            {"Image", CPDFAnnotationType.Image }
+        };
+
+        public static Dictionary<int, C_LINE_TYPE> GetLineTypeFromIndex = new Dictionary<int, C_LINE_TYPE>()
+        {
+            { 0, C_LINE_TYPE.LINETYPE_NONE },
+            { 1, C_LINE_TYPE.LINETYPE_ARROW },
+            { 2, C_LINE_TYPE.LINETYPE_CLOSEDARROW },
+            { 3, C_LINE_TYPE.LINETYPE_SQUARE },
+            { 4, C_LINE_TYPE.LINETYPE_CIRCLE },
+            { 5, C_LINE_TYPE.LINETYPE_DIAMOND },
+            { 6, C_LINE_TYPE.LINETYPE_BUTT },
+            { 7, C_LINE_TYPE.LINETYPE_ROPENARROW },
+            { 8, C_LINE_TYPE.LINETYPE_RCLOSEDARROW },
+            { 9, C_LINE_TYPE.LINETYPE_SLASH }
+        };
+
+        public static Dictionary<AnnotArgsType, CPDFAnnotationType> GetAnnotArgsTypeFromAnnotationType = new Dictionary<AnnotArgsType, CPDFAnnotationType>()
+        {
+            { AnnotArgsType.AnnotHighlight, CPDFAnnotationType.Highlight},
+            { AnnotArgsType.AnnotUnderline, CPDFAnnotationType.Underline },
+            {AnnotArgsType.AnnotSquiggly , CPDFAnnotationType.Squiggly },
+            {AnnotArgsType.AnnotStrikeout , CPDFAnnotationType.Strikeout},
+            {AnnotArgsType.AnnotSquare , CPDFAnnotationType.Square },
+            {AnnotArgsType.AnnotCircle , CPDFAnnotationType.Circle },
+            {AnnotArgsType.AnnotLine , CPDFAnnotationType.Line},
+        };
+    }
+
+    /// <summary>
+    /// 用于换算的dash
+    /// </summary>
+    public class CPDFDashData
+    {
+        public event PropertyChangedEventHandler PropertyChanged;
+        public void RaisePropertyChanged(string PropertyName)
+        {
+            if (this.PropertyChanged != null)
+            {
+                this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(PropertyName));
+            }
+        }
+
+        private bool _isSolid = true;
+        public bool IsSolid
+        {
+            get => _isSolid;
+            set
+            {
+                _isSolid = value;
+                RaisePropertyChanged("IsSolid");
+            }
+        }
+
+        private int _dashSpacing = 1;
+        public int DashSpacing {
+            get => _dashSpacing;
+            set
+            {
+                _dashSpacing = value;
+                RaisePropertyChanged("IsSolid");
+            }
+        }
+    }
+
+    public class CPDFFontData
+    {
+        public string FontFamily = "Helvetica";
+        public int FontSize = 20;
+        public bool IsBold = false;
+        public bool IsItalic = false;
+        public TextAlignment TextAlignment = TextAlignment.Left;
+    }
+
+    public abstract class CPDFAnnotationData
+    {
+        public CPDFAnnotationType AnnotationType;
+        public string Note = string.Empty;
+        public string Author = "ComPDFKit";
+        public bool IsLocked = false;
+    }
+
+    public class CPDFMarkupData : CPDFAnnotationData
+    {
+        public double Opacity = 1;
+        public Color Color = Color.FromRgb(255, 0, 0);
+    }
+
+    public class CPDFShapeData : CPDFAnnotationData
+    {
+        public Color BorderColor = Color.FromRgb(255, 0, 0);
+        public Color FillColor = Color.FromRgb(255, 255, 255);
+        public double Opacity = 1;
+        public int Thickness = 1;
+        public DashStyle DashStyle = DashStyles.Solid;
+    }
+
+    public class CPDFLineShapeData : CPDFAnnotationData
+    {
+        public Color BorderColor = Color.FromRgb(255, 0, 0);
+        public double Opacity = 1;
+        public int Thickness = 1;
+        public DashStyle DashStyle = DashStyles.Solid;
+        public LineType LineType = new LineType() { HeadLineType = C_LINE_TYPE.LINETYPE_NONE, TailLineType = C_LINE_TYPE.LINETYPE_NONE };
+    }
+
+    public class CPDFFreeTextData : CPDFAnnotationData
+    {
+        public Color BorderColor = Color.FromRgb(255, 0, 0);
+        public double Opacity = 1;
+        public string FontFamily = "Helvetica";
+        public int FontSize = 20;
+        public bool IsBold = false;
+        public bool IsItalic = false;
+        public TextAlignment TextAlignment = TextAlignment.Left;
+    }
+
+    public class CPDFNoteData : CPDFAnnotationData
+    {
+        public Color BorderColor = Color.FromRgb(255, 0, 0);
+    }
+
+
+    public class CPDFFreehandData : CPDFAnnotationData
+    {
+        public Color BorderColor = Color.FromRgb(255, 0, 0);
+        public double Opacity = 1;
+        public double Thickness = 1;
+    }
+
+    public class CPDFStampData : CPDFAnnotationData, INotifyPropertyChanged
+    {
+        public event PropertyChangedEventHandler PropertyChanged;
+        public void RaisePropertyChanged(string PropertyName)
+        {
+            if (this.PropertyChanged != null)
+            {
+                this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(PropertyName));
+            }
+        }
+
+        private string stampText;
+
+        public string StampText
+        {
+            get { return stampText; }
+            set
+            {
+                stampText = value;
+                RaisePropertyChanged("StampText");
+            }
+        }
+
+        private string sourcePath;
+
+        public string SourcePath
+        {
+            get { return sourcePath; }
+            set
+            {
+                sourcePath = value;
+                RaisePropertyChanged("SourcePath");
+            }
+        }
+
+
+        private int maxWidth;
+
+        public int MaxWidth
+        {
+            get { return maxWidth; }
+            set
+            {
+                maxWidth = value;
+                RaisePropertyChanged("MaxWidth");
+            }
+        }
+
+        private int maxHeight;
+
+        public int MaxHeight
+        {
+            get { return maxHeight; }
+            set
+            {
+                maxHeight = value;
+                RaisePropertyChanged("MaxHeight");
+            }
+        }
+
+
+        private StampType type = StampType.UNKNOWN_STAMP;
+
+        public StampType Type
+        {
+            get { return type; }
+            set
+            {
+                type = value;
+                RaisePropertyChanged("Type");
+            }
+        }
+
+        public string TypeText
+        {
+            get
+            {
+                if(Type == StampType.TEXT_STAMP)
+                {
+                    return "Text Stamp";
+                }
+
+                if (Type == StampType.IMAGE_STAMP)
+                {
+                    return "Image Stamp";
+                }
+
+                return type.ToString();
+            }
+        }
+
+        private double opacity;
+
+        public double Opacity
+        {
+            get { return opacity; }
+            set
+            {
+                opacity = value;
+                RaisePropertyChanged("Opacity");
+            }
+        }
+        private BitmapSource imageSource;
+
+        public BitmapSource ImageSource
+        {
+            get { return imageSource; }
+            set
+            {
+                imageSource = value;
+                RaisePropertyChanged("ImageSource");
+            }
+        }
+
+        public TextStampColor TextColor = TextStampColor.TEXTSTAMP_WHITE;
+        public string StampTextDate = "";
+        public TextStampSharp TextSharp = TextStampSharp.TEXTSTAMP_NONE;
+        public bool IsCheckedDate = false;
+        public bool IsCheckedTime = false;
+    }
+
+    public class CustomStampList : List<CPDFStampData>
+    {
+
+    }
+
+    public class CPDFSignatureData : CPDFAnnotationData, INotifyPropertyChanged
+    {
+        public event PropertyChangedEventHandler PropertyChanged;
+        public void RaisePropertyChanged(string PropertyName)
+        {
+            if (this.PropertyChanged != null)
+            {
+                this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(PropertyName));
+            }
+        }
+        private string sourcePath;
+
+        public string SourcePath
+        {
+            get { return sourcePath; }
+            set
+            {
+                sourcePath = value;
+                RaisePropertyChanged("SourcePath");
+            }
+        }
+        private string drawingPath;
+
+        public string DrawingPath
+        {
+            get { return drawingPath; }
+            set
+            {
+                drawingPath = value;
+                RaisePropertyChanged("DrawingPath");
+            }
+        }
+
+        public SignatureType Type { get; set; }
+        public double inkThickness { get; set; }
+        public Color inkColor { get; set; }
+    }
+
+    public class SignatureList : List<CPDFSignatureData>
+    {
+
+    }
+}

+ 24 - 0
Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationList/PDFAnnotationListControl/CPDFAnnotationListControl.xaml

@@ -0,0 +1,24 @@
+<UserControl x:Class="Compdfkit_Tools.PDFControl.CPDFAnnotationListControl"
+             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:cpdftoolsui="clr-namespace:Compdfkit_Tools.PDFControlUI"
+             mc:Ignorable="d" 
+              d:DesignHeight="800" d:DesignWidth="300">
+    <Grid>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="auto"></RowDefinition>
+            <RowDefinition></RowDefinition>
+        </Grid.RowDefinitions>
+        <Grid Height="50">
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition></ColumnDefinition>
+                <ColumnDefinition Width="auto"></ColumnDefinition>
+                <ColumnDefinition Width="auto"></ColumnDefinition>
+            </Grid.ColumnDefinitions>
+            <TextBlock Text="Annotation List"  FontSize="14" Foreground="#42464D" Margin="16,0,0,0" VerticalAlignment="Center"></TextBlock>
+        </Grid>
+        <cpdftoolsui:CPDFAnnoationListUI x:Name="AnnotationList" Grid.Row="1" Loaded="AnnotationList_Loaded" Unloaded="AnnotationList_Unloaded"></cpdftoolsui:CPDFAnnoationListUI>
+    </Grid>
+</UserControl>

+ 137 - 0
Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationList/PDFAnnotationListControl/CPDFAnnotationListControl.xaml.cs

@@ -0,0 +1,137 @@
+using ComPDFKit.PDFAnnotation;
+using ComPDFKitViewer.AnnotEvent;
+using ComPDFKitViewer.PdfViewer;
+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;
+using static Compdfkit_Tools.PDFControlUI.CPDFAnnoationListUI;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
+
+namespace Compdfkit_Tools.PDFControl
+{
+    /// <summary>
+    /// CPDFAnnotationListControl.xaml 的交互逻辑
+    /// </summary>
+    public partial class CPDFAnnotationListControl : UserControl
+    {
+        /// <summary>
+        /// PDFViewer
+        /// </summary>
+        private CPDFViewer pdfViewer;
+
+        public CPDFAnnotationListControl()
+        {
+            InitializeComponent();
+            Loaded += CPDFAnnotationListControl_Loaded;
+        }
+
+        private void CPDFAnnotationListControl_Loaded(object sender, RoutedEventArgs e)
+        {
+            AnnotationList.DeleteItemHandler -= AnnotationList_DeleteItemHandler;
+            AnnotationList.DeleteItemHandler += AnnotationList_DeleteItemHandler;
+        }
+
+        private void AnnotationList_DeleteItemHandler(object sender, Dictionary<int, List<int>> e)
+        {
+           if(pdfViewer!=null)
+            {
+                pdfViewer.ClearSelectAnnots();
+                pdfViewer.RemovePageAnnot(e);
+                LoadAnnotationList();
+            }
+        }
+
+        /// <summary>
+        /// 设置PDFViewer
+        /// </summary>
+        public void InitWithPDFViewer(CPDFViewer newPDFView)
+        {
+            pdfViewer = newPDFView;
+            pdfViewer.AnnotActiveHandler -= PdfViewer_AnnotActiveHandler;
+            pdfViewer.AnnotActiveHandler += PdfViewer_AnnotActiveHandler;
+
+            
+        }
+
+        private void PdfViewer_AnnotActiveHandler(object sender, AnnotAttribEvent e)
+        {
+            if (e != null)
+            {
+                //TODO SomeThing Need Change
+              int a =  e.GetAnnotHandlerEventArgs(e.GetAnnotTypes())[0].AnnotIndex;
+              int b =  e.GetAnnotHandlerEventArgs(e.GetAnnotTypes())[0].PageIndex;
+                AnnotationList.SelectAnnotationChanged(b,a);
+            }
+            else
+            {
+                AnnotationList.SelectAnnotationChanged(-1);
+            }
+        }
+
+        /// <summary>
+        /// 加载缩略图
+        /// </summary>
+        public void LoadAnnotationList()
+        {
+            if (pdfViewer == null || pdfViewer.Document == null)
+            {
+                return;
+            }
+
+            if (pdfViewer.Document.IsLocked)
+            {
+                return;
+            }
+            int pageCount = pdfViewer.Document.PageCount;
+
+            List<BindAnnotationResult> bindAnnotationResults = new List<BindAnnotationResult>();
+
+            for (int i = 0; i < pageCount; i++)
+            {
+                List<AnnotHandlerEventArgs> annotList = pdfViewer.GetAnnotCommentList(i, pdfViewer.Document);
+                if (annotList != null)
+                {
+                    Dispatcher.Invoke(() =>
+                    {
+                        foreach (AnnotHandlerEventArgs annot in annotList)
+                        {
+                            bindAnnotationResults.Add(new BindAnnotationResult
+                            {
+                                PageIndex = i,
+                                annotationData = annot
+                            });
+                        }
+                    });
+                }
+            }
+            AnnotationList.SetAnnotationList(bindAnnotationResults);
+        }
+
+        private void AnnotationList_Loaded(object sender, RoutedEventArgs e)
+        {
+            AnnotationList.AnnotationSelectionChanged += AnnotationList_AnnotationSelectionChanged;
+        }
+
+        private void AnnotationList_Unloaded(object sender, RoutedEventArgs e)
+        {
+            AnnotationList.AnnotationSelectionChanged -= AnnotationList_AnnotationSelectionChanged;
+        }
+
+        private void AnnotationList_AnnotationSelectionChanged(object sender, object e)
+        {
+            var bindAnnotationResult = e as BindAnnotationResult;
+            pdfViewer.SelectAnnotation(bindAnnotationResult.PageIndex, bindAnnotationResult.AnnotIndex);
+        }
+    }
+}

File diff suppressed because it is too large
+ 114 - 0
Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationList/PDFAnnotationListUI/CPDFAnnoationListUI.xaml


+ 260 - 0
Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationList/PDFAnnotationListUI/CPDFAnnoationListUI.xaml.cs

@@ -0,0 +1,260 @@
+using Compdfkit_Tools.Data;
+using ComPDFKitViewer.AnnotEvent;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+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.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Compdfkit_Tools.PDFControlUI
+{
+    /// <summary>
+    /// CPDFAnnoationListUI.xaml 的交互逻辑
+    /// </summary>
+    public partial class CPDFAnnoationListUI : UserControl
+    {
+        public class BindAnnotationResult : INotifyPropertyChanged
+        {
+            /// <summary>
+            /// 页面索引
+            /// </summary>
+            public int PageIndex { get; set; }
+
+            public int AnnotIndex { get => annotationData.AnnotIndex; }
+
+            public string CreateDate
+            {
+                get
+                {
+                    if (Regex.IsMatch(annotationData.CreateTime, "(?<=D\\:)[0-9]+(?=[\\+\\-])"))
+                    {
+                        string dateStr = Regex.Match(annotationData.CreateTime, "(?<=D\\:)[0-9]+(?=[\\+\\-])").Value;
+                        return (dateStr.Substring(0, 4) + "-" + dateStr.Substring(4, 2) + "-" + dateStr.Substring(6, 2) + ", " + dateStr.Substring(8, 2) + ":" +
+                            dateStr.Substring(10, 2));
+                    }
+                    else
+                    {
+                        return String.Empty;
+                    }
+                }
+            }
+
+            public string Note
+            {
+                get => annotationData.Content;
+            }
+
+            public AnnotArgsType CurrentAnnotationType
+            {
+                get => annotationData.EventType;
+            }
+
+            public AnnotHandlerEventArgs annotationData { get; set; }
+
+            public event PropertyChangedEventHandler PropertyChanged;
+            protected void OnPropertyChanged(string propertyName)
+            {
+                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+            }
+        }
+
+        internal class AnnotationBindData
+        {
+            public BindAnnotationResult BindProperty { get; set; }
+            public AnnotationBindData()
+            {
+                BindProperty = new BindAnnotationResult();
+            }
+            public int ShowPageIndex { get { return BindProperty.PageIndex + 1; } set { BindProperty.PageIndex = value; } }
+        }
+
+        /// <summary>
+        /// 绑定注释集合
+        /// </summary>
+        private ObservableCollection<AnnotationBindData> annotationList = new ObservableCollection<AnnotationBindData>();
+
+        public event EventHandler<object> AnnotationSelectionChanged;
+
+        public event EventHandler<Dictionary<int, List<int>>> DeleteItemHandler;
+
+        private ContextMenu popContextMenu;
+        private bool enableSelectEvent = true;
+
+        public CPDFAnnoationListUI()
+        {
+            InitializeComponent();
+            ICollectionView groupView = CollectionViewSource.GetDefaultView(annotationList);
+            groupView.GroupDescriptions.Add(new PropertyGroupDescription(nameof(AnnotationBindData.ShowPageIndex)));
+            popContextMenu=new ContextMenu();
+            MenuItem deleteMenu=new MenuItem();
+            deleteMenu.Header = "Delete";
+            deleteMenu.Click += DeleteMenu_Click;
+            popContextMenu.Items.Add(deleteMenu);
+            MenuItem deleteAllMenu=new MenuItem();
+            deleteAllMenu.Header = "Delete All";
+            deleteAllMenu.Click += DeleteAllMenu_Click;
+            popContextMenu.Items.Add(deleteAllMenu);
+        }
+
+        private void DeleteAllMenu_Click(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                Dictionary<int, List<int>> delDict = new Dictionary<int, List<int>>();
+
+                foreach (AnnotationBindData bindData in annotationList)
+                {
+                    if (delDict.ContainsKey(bindData.BindProperty.PageIndex) == false)
+                    {
+                        delDict[bindData.BindProperty.PageIndex] = new List<int>();
+                    }
+                    delDict[bindData.BindProperty.PageIndex].Add(bindData.BindProperty.AnnotIndex);
+                }
+
+                if(delDict.Count > 0)
+                {
+                    DeleteItemHandler?.Invoke(this, delDict);
+                }
+            }
+            catch (Exception ex)
+            {
+
+            }
+        }
+
+        private void DeleteMenu_Click(object sender, RoutedEventArgs e)
+        {
+            try
+            {
+                if (AnnotationList != null && AnnotationList.SelectedIndex >= 0)
+                {
+                    AnnotationBindData bindData = annotationList[AnnotationList.SelectedIndex];
+
+                    Dictionary<int,List<int>> delDict=new Dictionary<int, List<int>>();
+                    delDict[bindData.BindProperty.PageIndex] = new List<int>()
+                    {
+                        bindData.BindProperty.AnnotIndex
+                    };
+                    DeleteItemHandler?.Invoke(this, delDict);
+                }
+            }
+            catch(Exception ex)
+            {
+
+            }
+        }
+
+        /// <summary>
+        /// 绑定注释集合
+        /// </summary>
+        /// <param name="results"></param>
+        public void SetAnnotationList(List<BindAnnotationResult> results)
+        {
+            annotationList.Clear();
+            AnnotationList.ContextMenu = null;
+            if (results == null || results.Count == 0)
+            {
+                AnnotationList.ItemsSource = null;
+                NoContentText.Visibility = Visibility.Visible;
+                return;
+            }
+
+            foreach (BindAnnotationResult item in results)
+            {
+                annotationList.Add(new AnnotationBindData()
+                {
+                    BindProperty = item
+                });
+            }
+            AnnotationList.ItemsSource = annotationList;
+            if(annotationList.Count > 0)
+            {
+                AnnotationList.ContextMenu = popContextMenu;
+            }
+            AnnotationList.Visibility = Visibility.Visible;
+            NoContentText.Visibility = Visibility.Collapsed;
+        }
+
+        private void AnnotationListControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            try
+            {
+                if(enableSelectEvent)
+                {
+                    AnnotationSelectionChanged?.Invoke(this, (e.AddedItems[0] as AnnotationBindData).BindProperty);
+                }
+            }
+            catch { }
+        }
+
+
+
+        public void CancelSelected()
+        {
+            AnnotationList.SelectedIndex = -1;
+        }
+
+        public void SelectAnnotationChanged(int annotationIndex = -1)
+        {
+
+            AnnotationList.SelectedIndex = annotationIndex;
+        }
+
+        public void  SelectAnnotationChanged(int pageIIndex,int annotIndex)
+        {
+            if (annotationList != null && annotationList.Count > 0)
+            {
+                for (int i = 0; i < annotationList.Count; i++)
+                {
+                    AnnotationBindData data = annotationList[i];
+                    if (data.BindProperty.PageIndex == pageIIndex && data.BindProperty.AnnotIndex == annotIndex)
+                    {
+                        enableSelectEvent = false;
+                        AnnotationList.SelectedIndex = i;
+                        enableSelectEvent = true;
+                        break;
+                    }
+                }
+            }
+        }
+
+        private void AnnotationList_ContextMenuOpening(object sender, ContextMenuEventArgs e)
+        {
+            try
+            {
+                MenuItem checkMenu = popContextMenu.Items[0] as MenuItem;
+                if (checkMenu != null)
+                {
+                    checkMenu.IsEnabled = true;
+                }
+                if (AnnotationList != null && AnnotationList.SelectedIndex == -1)
+                {
+                    checkMenu.IsEnabled = false;
+                }
+
+            }
+            catch(Exception ex)
+            {
+
+            }
+        }
+
+        private void AnnotationList_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            CancelSelected();
+        }
+    }
+}

+ 15 - 0
Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationControl/CPDFAnnotationControl.xaml

@@ -0,0 +1,15 @@
+<UserControl x:Class="Compdfkit_Tools.PDFControl.CPDFAnnotationControl"
+             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.PDFControlUI"
+             mc:Ignorable="d" 
+             Loaded="AnnotationControl_Loaded"
+             Unloaded="AnnotationControl_Unloaded"
+             d:DesignHeight="800" d:DesignWidth="300">
+    <Grid>
+            <Border x:Name="AnnotationPanelContainer" Background="#FFFFFF"></Border>
+        <TextBlock x:Name="EmptyMessage" Text="The property panel is empty." VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock>
+    </Grid>
+</UserControl>

+ 908 - 0
Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationControl/CPDFAnnotationControl.xaml.cs

@@ -0,0 +1,908 @@
+using Compdfkit_Tools.Data;
+using Compdfkit_Tools.PDFControl;
+using Compdfkit_Tools.PDFControlUI;
+using ComPDFKitViewer.AnnotEvent;
+using ComPDFKitViewer;
+using ComPDFKitViewer.PdfViewer;
+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.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
+using Compdfkit_Tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI;
+using System.IO;
+using System.Windows.Ink;
+using Compdfkit_Tools.Annotation.PDFAnnotationUI;
+using Microsoft.Win32;
+using System.Windows.Media;
+using Compdfkit_Tools.Properties;
+
+namespace Compdfkit_Tools.PDFControl
+{
+    /// <summary>
+    /// CPDFAnnotationControl.xaml 的交互逻辑
+    /// </summary>
+    public partial class CPDFAnnotationControl : UserControl
+    {
+
+        private bool isTempPanel = false;
+
+        private CPDFAnnotationType currentAnnotationType = CPDFAnnotationType.Unknow;
+
+        private CPDFViewer pdfViewer;
+
+        private UIElement annotationPanel = null;
+        private UIElement tempAnnotationPanel = null;
+
+        private CPDFMarkupUI pdfHighlightUI;
+        private CPDFMarkupUI pdfUnderlineUI;
+        private CPDFMarkupUI pdfSquigglyUI;
+        private CPDFMarkupUI pdfStrikeoutUI;
+        private CPDFShapeUI pdfSquareUI;
+        private CPDFShapeUI pdfCircleUI;
+        private CPDFShapeUI pdfLineUI;
+        private CPDFShapeUI pdfArrowUI;
+        private CPDFFreehandUI pdfFreehandUI;
+        private CPDFFreeTextUI pdfFreeTextUI;
+        private CPDFNoteUI pdfNoteUI;
+        private CPDFStampUI pdfStampUI;
+        private CPDFSignatureUI pdfSignatureUI;
+        private CPDFLinkUI pdfLinkUI;
+        private AnnotHandlerEventArgs annotArgs;
+        private EraseArgs eraseArgs;
+        private bool disableClean;
+        public event EventHandler ClearAnnotationBar;
+
+        public CPDFAnnotationControl()
+        {
+            InitializeComponent();
+        }
+
+        public void SetPDFViewer(CPDFViewer pdfViewer)
+        {
+            if (this.pdfViewer != null)
+            {
+                UnLoadPDFViewHandler();
+            }
+            this.pdfViewer = pdfViewer;
+            LoadPDFViewHandler();
+        }
+
+        public void LoadPDFViewHandler()
+        {
+            if (this.pdfViewer != null)
+            {
+                this.pdfViewer.AnnotActiveHandler -= PDFViewer_AnnotActiveHandler;
+                this.pdfViewer.AnnotActiveHandler += PDFViewer_AnnotActiveHandler;
+                this.pdfViewer.AnnotEditHandler -= PdfViewer_AnnotEditHandler;
+                this.pdfViewer.AnnotEditHandler += PdfViewer_AnnotEditHandler;
+            }
+        }
+
+        private void PdfViewer_AnnotEditHandler(object sender, List<AnnotEditEvent> e)
+        {
+            if (e != null && e.Count > 0)
+            {
+                if (e[0].EditAction == ActionType.Del)
+                {
+                    if (pdfViewer.MouseMode == MouseModes.AnnotCreate && pdfViewer.ToolManager.CurrentAnnotArgs is EraseArgs)
+                    {
+                        return;
+                    }
+                    SetAnnotEventData(null);
+                }
+
+                if (e[0].EditAction == ActionType.Modify && e[0].EditAnnotArgs != null && e[0].EditAnnotArgs.EventType == AnnotArgsType.AnnotSticky)
+                {
+                    CPDFNoteUI tempUI = annotationPanel as CPDFNoteUI;
+                    if (tempUI == null || tempUI.annotAttribEvent == null)
+                    {
+                        tempUI = tempAnnotationPanel as CPDFNoteUI;
+                    }
+                    if (tempUI == null || tempUI.annotAttribEvent == null)
+                    {
+                        tempUI = pdfNoteUI;
+                    }
+                    if (tempUI != null && tempUI.annotAttribEvent != null)
+                    {
+                        AnnotAttribEvent oldEvent = tempUI.annotAttribEvent;
+                        oldEvent.Attribs[AnnotAttrib.NoteText] = e[0].EditAnnotArgs.Content;
+                        tempUI.SetPresentAnnotAttrib(oldEvent);
+                    }
+                }
+                if (e[0].EditAction == ActionType.Add && e[0].EditAnnotArgs.EventType == AnnotArgsType.AnnotStamp)
+                {
+                    pdfViewer.SetMouseMode(MouseModes.PanTool);
+                }
+            }
+        }
+
+        public void UnLoadPDFViewHandler()
+        {
+            if (this.pdfViewer != null)
+            {
+                this.pdfViewer.AnnotActiveHandler -= PDFViewer_AnnotActiveHandler;
+
+            }
+        }
+
+        private void AnnotationControl_Loaded(object sender, RoutedEventArgs e)
+        {
+            LoadPDFViewHandler();
+        }
+
+        private void AnnotationControl_Unloaded(object sender, RoutedEventArgs e)
+        {
+            UnLoadPDFViewHandler();
+        }
+        /// <summary>
+        /// 获取Annotation面板
+        /// </summary>
+        /// <returns></returns>
+        private UIElement GetAnnotationPanel()
+        {
+            return AnnotationPanelContainer.Child;
+        }
+
+        private void SetAnnotationPanel(UIElement newChild)
+        {
+            AnnotationPanelContainer.Child = newChild;
+        }
+
+        /// <summary>
+        /// 展开Annotation面板
+        /// </summary>
+        /// <param name="isExpand"></param>
+        private void ExpandPanel()
+        {
+            AnnotationPanelContainer.Visibility = Visibility.Visible;
+        }
+
+        private void ChangeAnnotationData()
+        {
+            switch (currentAnnotationType)
+            {
+                case CPDFAnnotationType.Highlight:
+                case CPDFAnnotationType.Underline:
+                case CPDFAnnotationType.Squiggly:
+                case CPDFAnnotationType.Strikeout:
+                    (annotationPanel as CPDFMarkupUI).PropertyChanged -= CPDFAnnotationControl_PropertyChanged;
+                    (annotationPanel as CPDFMarkupUI).PropertyChanged += CPDFAnnotationControl_PropertyChanged;
+                    SetAnnotationProperty((annotationPanel as CPDFMarkupUI).GetMarkupData());
+                    break;
+                case CPDFAnnotationType.Square:
+                case CPDFAnnotationType.Circle:
+                case CPDFAnnotationType.Line:
+                case CPDFAnnotationType.Arrow:
+                    (annotationPanel as CPDFShapeUI).PropertyChanged -= CPDFAnnotationControl_PropertyChanged;
+                    (annotationPanel as CPDFShapeUI).PropertyChanged += CPDFAnnotationControl_PropertyChanged;
+                    SetAnnotationProperty((annotationPanel as CPDFShapeUI).GetShapeData());
+                    break;
+                case CPDFAnnotationType.Note:
+                    (annotationPanel as CPDFNoteUI).PropertyChanged -= CPDFAnnotationControl_PropertyChanged;
+                    (annotationPanel as CPDFNoteUI).PropertyChanged += CPDFAnnotationControl_PropertyChanged;
+                    SetAnnotationProperty((annotationPanel as CPDFNoteUI).GetNoteData());
+                    break;
+                case CPDFAnnotationType.Freehand:
+                    (annotationPanel as CPDFFreehandUI).PropertyChanged -= CPDFAnnotationControl_PropertyChanged;
+                    (annotationPanel as CPDFFreehandUI).PropertyChanged += CPDFAnnotationControl_PropertyChanged;
+                    SetAnnotationProperty((annotationPanel as CPDFFreehandUI).GetFreehandData());
+                    break;
+                case CPDFAnnotationType.FreeText:
+                    (annotationPanel as CPDFFreeTextUI).PropertyChanged -= CPDFAnnotationControl_PropertyChanged;
+                    (annotationPanel as CPDFFreeTextUI).PropertyChanged += CPDFAnnotationControl_PropertyChanged;
+                    SetAnnotationProperty((annotationPanel as CPDFFreeTextUI).GetFreeTextData());
+                    break;
+                case CPDFAnnotationType.Stamp:
+                    (annotationPanel as CPDFStampUI).PropertyChanged -= CPDFAnnotationControl_PropertyChanged;
+                    (annotationPanel as CPDFStampUI).PropertyChanged += CPDFAnnotationControl_PropertyChanged;
+                    break;
+                case CPDFAnnotationType.Signature:
+                    (annotationPanel as CPDFSignatureUI).PropertyChanged -= CPDFAnnotationControl_PropertyChanged;
+                    (annotationPanel as CPDFSignatureUI).PropertyChanged += CPDFAnnotationControl_PropertyChanged;
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// 参数解析
+        /// </summary>
+        /// <param name="pdfAnnotationData"></param>
+        private void SetAnnotationProperty(CPDFAnnotationData pdfAnnotationData = null)
+        {
+            if (pdfAnnotationData == null)
+            {
+                pdfViewer.SetMouseMode(MouseModes.PanTool);
+                return;
+            }
+
+            CPDFAnnotationType annotationType = pdfAnnotationData.AnnotationType;
+            AnnotHandlerEventArgs annotHandlerEventArgs = null;
+            //this.pdfViewer.SetMouseMode(MouseModes.PanTool);
+            Dictionary<AnnotAttrib, object> annotAttribsList = new Dictionary<AnnotAttrib, object>();
+            switch (annotationType)
+            {
+                case CPDFAnnotationType.Highlight:
+                    CPDFMarkupData highlightData = pdfAnnotationData as CPDFMarkupData;
+                    annotHandlerEventArgs = new TextHighlightAnnotArgs();
+                    (annotHandlerEventArgs as TextHighlightAnnotArgs).Color = highlightData.Color;
+                    (annotHandlerEventArgs as TextHighlightAnnotArgs).Transparency = highlightData.Opacity;
+                    (annotHandlerEventArgs as TextHighlightAnnotArgs).Content = highlightData.Note;
+                    (annotHandlerEventArgs as TextHighlightAnnotArgs).Author = highlightData.Author;
+                    (annotHandlerEventArgs as TextHighlightAnnotArgs).Locked = highlightData.IsLocked;
+                    break;
+
+                case CPDFAnnotationType.Underline:
+                    CPDFMarkupData underlineData = pdfAnnotationData as CPDFMarkupData;
+                    annotHandlerEventArgs = new TextUnderlineAnnotArgs();
+                    (annotHandlerEventArgs as TextUnderlineAnnotArgs).Color = underlineData.Color;
+                    (annotHandlerEventArgs as TextUnderlineAnnotArgs).Transparency = underlineData.Opacity;
+                    (annotHandlerEventArgs as TextUnderlineAnnotArgs).Author = underlineData.Author;
+                    (annotHandlerEventArgs as TextUnderlineAnnotArgs).Content = underlineData.Note;
+                    (annotHandlerEventArgs as TextUnderlineAnnotArgs).Locked = underlineData.IsLocked;
+                    break;
+
+                case CPDFAnnotationType.Strikeout:
+                    CPDFMarkupData strikeoutData = pdfAnnotationData as CPDFMarkupData;
+                    annotHandlerEventArgs = new TextStrikeoutAnnotArgs();
+                    (annotHandlerEventArgs as TextStrikeoutAnnotArgs).Color = strikeoutData.Color;
+                    (annotHandlerEventArgs as TextStrikeoutAnnotArgs).Transparency = strikeoutData.Opacity;
+                    (annotHandlerEventArgs as TextStrikeoutAnnotArgs).Locked = strikeoutData.IsLocked;
+                    (annotHandlerEventArgs as TextStrikeoutAnnotArgs).Author = strikeoutData.Author;
+                    (annotHandlerEventArgs as TextStrikeoutAnnotArgs).Content = strikeoutData.Note;
+                    break;
+
+                case CPDFAnnotationType.Squiggly:
+                    CPDFMarkupData squigglyData = pdfAnnotationData as CPDFMarkupData;
+                    annotHandlerEventArgs = new TextSquigglyAnnotArgs();
+                    (annotHandlerEventArgs as TextSquigglyAnnotArgs).Color = squigglyData.Color;
+                    (annotHandlerEventArgs as TextSquigglyAnnotArgs).Transparency = squigglyData.Opacity;
+                    (annotHandlerEventArgs as TextSquigglyAnnotArgs).Locked = squigglyData.IsLocked;
+                    (annotHandlerEventArgs as TextSquigglyAnnotArgs).Author = squigglyData.Author;
+                    (annotHandlerEventArgs as TextSquigglyAnnotArgs).Content = squigglyData.Note;
+                    break;
+
+                case CPDFAnnotationType.Square:
+                    CPDFShapeData squareData = pdfAnnotationData as CPDFShapeData;
+                    annotHandlerEventArgs = new SquareAnnotArgs();
+                    (annotHandlerEventArgs as SquareAnnotArgs).LineColor = squareData.BorderColor;
+                    (annotHandlerEventArgs as SquareAnnotArgs).BgColor = squareData.FillColor;
+                    (annotHandlerEventArgs as SquareAnnotArgs).LineWidth = squareData.Thickness;
+                    (annotHandlerEventArgs as SquareAnnotArgs).Transparency = squareData.Opacity;
+                    (annotHandlerEventArgs as SquareAnnotArgs).LineDash = squareData.DashStyle;
+                    (annotHandlerEventArgs as SquareAnnotArgs).Author = squareData.Author;
+                    (annotHandlerEventArgs as SquareAnnotArgs).Content = squareData.Note;
+                    break;
+
+                case CPDFAnnotationType.Circle:
+                    CPDFShapeData cicleData = pdfAnnotationData as CPDFShapeData;
+                    annotHandlerEventArgs = new CircleAnnotArgs();
+                    (annotHandlerEventArgs as CircleAnnotArgs).LineColor = cicleData.BorderColor;
+                    (annotHandlerEventArgs as CircleAnnotArgs).BgColor = cicleData.FillColor;
+                    (annotHandlerEventArgs as CircleAnnotArgs).LineWidth = cicleData.Thickness;
+                    (annotHandlerEventArgs as CircleAnnotArgs).Transparency = cicleData.Opacity;
+                    (annotHandlerEventArgs as CircleAnnotArgs).LineDash = cicleData.DashStyle;
+                    (annotHandlerEventArgs as CircleAnnotArgs).Author = cicleData.Author;
+                    (annotHandlerEventArgs as CircleAnnotArgs).Content = cicleData.Note;
+                    break;
+
+                case CPDFAnnotationType.Arrow:
+                case CPDFAnnotationType.Line:
+                    CPDFLineShapeData lineData = pdfAnnotationData as CPDFLineShapeData;
+                    annotHandlerEventArgs = new LineAnnotArgs();
+                    (annotHandlerEventArgs as LineAnnotArgs).LineColor = lineData.BorderColor;
+                    (annotHandlerEventArgs as LineAnnotArgs).LineWidth = lineData.Thickness;
+                    (annotHandlerEventArgs as LineAnnotArgs).Transparency = lineData.Opacity;
+                    (annotHandlerEventArgs as LineAnnotArgs).LineDash = lineData.DashStyle;
+                    (annotHandlerEventArgs as LineAnnotArgs).HeadLineType = lineData.LineType.HeadLineType;
+                    (annotHandlerEventArgs as LineAnnotArgs).TailLineType = lineData.LineType.TailLineType;
+                    (annotHandlerEventArgs as LineAnnotArgs).Author = lineData.Author;
+                    (annotHandlerEventArgs as LineAnnotArgs).Content = lineData.Note;
+                    break;
+
+                case CPDFAnnotationType.Note:
+                    CPDFNoteData noteData = pdfAnnotationData as CPDFNoteData;
+                    annotHandlerEventArgs = new StickyAnnotArgs();
+                    (annotHandlerEventArgs as StickyAnnotArgs).Color = noteData.BorderColor;
+                    (annotHandlerEventArgs as StickyAnnotArgs).StickyNote = noteData.Note;
+                    (annotHandlerEventArgs as StickyAnnotArgs).Transparency = 1;
+                    (annotHandlerEventArgs as StickyAnnotArgs).Author = noteData.Author;
+                    break;
+
+                case CPDFAnnotationType.Freehand:
+                    CPDFFreehandData freehandData = pdfAnnotationData as CPDFFreehandData;
+                    annotHandlerEventArgs = new FreehandAnnotArgs();
+                    (annotHandlerEventArgs as FreehandAnnotArgs).InkColor = freehandData.BorderColor;
+                    (annotHandlerEventArgs as FreehandAnnotArgs).LineWidth = freehandData.Thickness;
+                    (annotHandlerEventArgs as FreehandAnnotArgs).Transparency = freehandData.Opacity;
+                    (annotHandlerEventArgs as FreehandAnnotArgs).Content = freehandData.Note;
+                    (annotHandlerEventArgs as FreehandAnnotArgs).Author = freehandData.Author;
+                    break;
+
+                case CPDFAnnotationType.FreeText:
+                    CPDFFreeTextData freeTextData = pdfAnnotationData as CPDFFreeTextData;
+                    annotHandlerEventArgs = new FreeTextAnnotArgs();
+                    (annotHandlerEventArgs as FreeTextAnnotArgs).Transparency = freeTextData.Opacity;
+                    (annotHandlerEventArgs as FreeTextAnnotArgs).FontName = freeTextData.FontFamily.ToString();
+                    (annotHandlerEventArgs as FreeTextAnnotArgs).FontColor = freeTextData.BorderColor;
+                    (annotHandlerEventArgs as FreeTextAnnotArgs).IsBold = freeTextData.IsBold;
+                    (annotHandlerEventArgs as FreeTextAnnotArgs).IsItalic = freeTextData.IsItalic;
+                    (annotHandlerEventArgs as FreeTextAnnotArgs).FontSize = freeTextData.FontSize;
+                    (annotHandlerEventArgs as FreeTextAnnotArgs).Align = freeTextData.TextAlignment;
+                    (annotHandlerEventArgs as FreeTextAnnotArgs).Content = freeTextData.Note;
+                    (annotHandlerEventArgs as FreeTextAnnotArgs).Author = freeTextData.Author;
+                    break;
+
+                case CPDFAnnotationType.Stamp:
+                    annotHandlerEventArgs = new StampAnnotArgs();
+                    StampAnnotArgs stampAnnot = annotHandlerEventArgs as StampAnnotArgs;
+                    CPDFStampData stampData = pdfAnnotationData as CPDFStampData;
+                    SetStamp(ref stampAnnot, stampData);
+                    break;
+                case CPDFAnnotationType.Signature:
+                    annotHandlerEventArgs = new StampAnnotArgs();
+                    StampAnnotArgs SignatureAnnot = annotHandlerEventArgs as StampAnnotArgs;
+                    CPDFSignatureData SignatureData = pdfAnnotationData as CPDFSignatureData;
+                    SetSignature(ref SignatureAnnot, SignatureData);
+                    break;
+                case CPDFAnnotationType.Link:
+                    if (annotHandlerEventArgs != null)
+                    {
+                        pdfViewer.SetToolParam(annotHandlerEventArgs);
+                    }
+                    break;
+                case CPDFAnnotationType.Unknow:
+                    pdfViewer.SetMouseMode(MouseModes.PanTool);
+                    return;
+                default:
+                    break;
+            }
+            this.pdfViewer.SetMouseMode(MouseModes.AnnotCreate);
+            pdfViewer.SetToolParam(annotHandlerEventArgs);
+        }
+
+        public void SetSignature(ref StampAnnotArgs Args, CPDFSignatureData stamp)
+        {
+            switch (stamp.Type)
+            {
+                case SignatureType.TextType:
+                case SignatureType.ImageType:
+                    {
+                        Args.Opacity = 1;
+                        Args.Type = StampType.IMAGE_STAMP;
+                        Args.ImagePath = stamp.SourcePath;
+                    }
+                    break;
+                case SignatureType.Drawing:
+                    {
+                        Args.SetInkData(GetPoints(stamp.DrawingPath), stamp.inkThickness, stamp.inkColor);
+                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+        private List<List<Point>> GetPoints(string Path)
+        {
+            StrokeCollection Strokes;
+            List<List<Point>> RawPointList = new List<List<Point>>();
+            using (FileStream strokeStream = File.OpenRead(Path))
+            {
+                Strokes = new StrokeCollection(strokeStream);
+            }
+
+            for (int kk = 0; kk < Strokes.Count; kk++)
+            {
+                List<Point> p = new List<Point>();
+                RawPointList.Add(p);
+                for (int gg = 0; gg < Strokes[kk].StylusPoints.Count; gg++)
+                {
+                    var point = Strokes[kk].StylusPoints[gg].ToPoint();
+
+                    if (point.X >= 0 && point.Y >= 0)
+                        RawPointList[kk].Add(point);
+
+                }
+            }
+            return RawPointList;
+        }
+
+        private void SetStamp(ref StampAnnotArgs Args, CPDFStampData stamp)
+        {
+            Args.StampText = stamp.StampText;
+            Args.Author = stamp.Author;
+            Args.Opacity = stamp.Opacity;
+            if (stamp.Type == StampType.IMAGE_STAMP)
+            {
+
+                Args.ImageWidth = stamp.MaxWidth;
+                Args.ImageHeight = stamp.MaxHeight;
+            }
+            else
+            {
+                Args.MaxWidth = stamp.MaxWidth;
+                Args.MaxHeight = stamp.MaxHeight;
+            }
+            Args.StampTextDate = stamp.StampTextDate;
+            Args.TextColor = stamp.TextColor;
+            Args.TextSharp = stamp.TextSharp;
+            if (!string.IsNullOrEmpty(stamp.SourcePath))
+            {
+                BitmapImage image = new BitmapImage(new Uri(stamp.SourcePath));
+                Args.ImageArray = new byte[image.PixelWidth * image.PixelHeight * 4];
+                image.CopyPixels(Args.ImageArray, image.PixelWidth * 4, 0);
+                Args.ImageHeight = image.PixelHeight;
+                Args.ImageWidth = image.PixelWidth;
+            }
+            else
+            {
+                try
+                {
+                    Args.ImageArray = new byte[stamp.ImageSource.PixelWidth * stamp.ImageSource.PixelHeight * 4];
+                    stamp.ImageSource.CopyPixels(Args.ImageArray, stamp.ImageSource.PixelWidth * 4, 0);
+                    Args.ImageHeight = stamp.ImageSource.PixelHeight;
+                    Args.ImageWidth = stamp.ImageSource.PixelWidth;
+                }
+                catch
+                {
+                    var i =  pdfStampUI.CustomStampList.IndexOf(stamp);
+                    Settings.Default.CustomStampList.RemoveAt(i);
+                    Settings.Default.Save();
+                    pdfStampUI.LoadSettings();
+                    return;
+                }
+
+            }
+            Args.Type = stamp.Type;
+        }
+
+        public void AnnotationCancel()
+        {
+            this.pdfViewer.SetMouseMode(MouseModes.PanTool);
+            ClearPanel();
+        }
+
+        private void CPDFAnnotationControl_PropertyChanged(object sender, CPDFAnnotationData e)
+        {
+            SetAnnotationProperty(e);
+
+            try
+            {
+                if (pdfViewer != null && pdfViewer.MouseMode == MouseModes.AnnotCreate && pdfViewer.ToolManager.CurrentAnnotArgs is FreehandAnnotArgs)
+                {
+                    FreehandAnnotArgs freehandArgs = pdfViewer.ToolManager.CurrentAnnotArgs as FreehandAnnotArgs;
+                    CPDFFreehandData freehandData = e as CPDFFreehandData;
+                    if (freehandData != null)
+                    {
+                        freehandArgs.InkColor = freehandData.BorderColor;
+                        freehandArgs.LineWidth = freehandData.Thickness;
+                        freehandArgs.Transparency = freehandData.Opacity;
+                        freehandArgs.Content = freehandData.Note;
+                        freehandArgs.Author = freehandData.Author;
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+            }
+        }
+
+        /// <summary>
+        /// 选择对应注释面板
+        /// 若未创建则创建
+        /// 已创建则使用已有项
+        /// </summary>
+        /// <param name="annotationType"></param>
+        public void InitAnnotationPanel(CPDFAnnotationType annotationType)
+        {
+            switch (annotationType)
+            {
+                case CPDFAnnotationType.Highlight:
+                    if (pdfHighlightUI == null)
+                    {
+                        pdfHighlightUI = new CPDFMarkupUI();
+                    }
+                    annotationPanel = pdfHighlightUI;
+                    (annotationPanel as CPDFMarkupUI).InitWithAnnotationType(annotationType);
+                    break;
+                case CPDFAnnotationType.Underline:
+                    if (pdfUnderlineUI == null)
+                    {
+                        pdfUnderlineUI = new CPDFMarkupUI();
+                    }
+                    annotationPanel = pdfUnderlineUI;
+                    (annotationPanel as CPDFMarkupUI).InitWithAnnotationType(annotationType);
+                    break;
+                case CPDFAnnotationType.Strikeout:
+                    if (pdfStrikeoutUI == null)
+                    {
+                        pdfStrikeoutUI = new CPDFMarkupUI();
+                    }
+                    annotationPanel = pdfStrikeoutUI;
+                    (annotationPanel as CPDFMarkupUI).InitWithAnnotationType(annotationType);
+                    break;
+                case CPDFAnnotationType.Squiggly:
+                    if (pdfSquigglyUI == null)
+                    {
+                        pdfSquigglyUI = new CPDFMarkupUI();
+                    }
+                    annotationPanel = pdfSquigglyUI;
+                    (annotationPanel as CPDFMarkupUI).InitWithAnnotationType(annotationType);
+                    break;
+                case CPDFAnnotationType.Square:
+                    if (pdfSquareUI == null)
+                    {
+                        pdfSquareUI = new CPDFShapeUI();
+                    }
+                    annotationPanel = pdfSquareUI;
+                    (annotationPanel as CPDFShapeUI).InitWithAnnotationType(annotationType);
+                    break;
+                case CPDFAnnotationType.Circle:
+                    if (pdfCircleUI == null)
+                    {
+                        pdfCircleUI = new CPDFShapeUI();
+                    }
+                    annotationPanel = pdfCircleUI;
+                    (annotationPanel as CPDFShapeUI).InitWithAnnotationType(annotationType);
+                    break;
+                case CPDFAnnotationType.Arrow:
+                    if (pdfArrowUI == null)
+                    {
+                        pdfArrowUI = new CPDFShapeUI();
+                    }
+                    annotationPanel = pdfArrowUI;
+                    (annotationPanel as CPDFShapeUI).InitWithAnnotationType(annotationType);
+                    break;
+                case CPDFAnnotationType.Line:
+                    if (pdfLineUI == null)
+                    {
+                        pdfLineUI = new CPDFShapeUI();
+                    }
+                    annotationPanel = pdfLineUI;
+                    (annotationPanel as CPDFShapeUI).InitWithAnnotationType(annotationType);
+                    break;
+                case CPDFAnnotationType.Freehand:
+                    if (pdfFreehandUI == null)
+                    {
+                        pdfFreehandUI = new CPDFFreehandUI();
+                        pdfFreehandUI.EraseClickHandler += PdfFreehandUI_EraseClickHandler;
+                        pdfFreehandUI.EraseChangeHandler += PdfFreehandUI_EraseChangeHandler;
+                    }
+                    annotationPanel = pdfFreehandUI;
+                    break;
+                case CPDFAnnotationType.FreeText:
+                    if (pdfFreeTextUI == null)
+                    {
+                        pdfFreeTextUI = new CPDFFreeTextUI();
+                    }
+                    annotationPanel = pdfFreeTextUI;
+                    break;
+                case CPDFAnnotationType.Note:
+                    if (pdfNoteUI == null)
+                    {
+                        pdfNoteUI = new CPDFNoteUI();
+                    }
+                    annotationPanel = pdfNoteUI;
+                    break;
+                case CPDFAnnotationType.Stamp:
+                    if (pdfStampUI == null)
+                    {
+                        pdfStampUI = new CPDFStampUI();
+                    }
+                    annotationPanel = pdfStampUI;
+                    break;
+                case CPDFAnnotationType.Signature:
+                    if (pdfSignatureUI == null)
+                    {
+                        pdfSignatureUI = new CPDFSignatureUI();
+                    }
+                    annotationPanel = pdfSignatureUI;
+                    break;
+                case CPDFAnnotationType.Link:
+                    if (pdfLinkUI == null)
+                    {
+                        pdfLinkUI = new CPDFLinkUI();
+                    }
+                    LinkAnnotArgs linkAnnotArgs = new LinkAnnotArgs();
+                    if (this.pdfViewer != null && this.pdfViewer.Document != null)
+                    {
+                        this.pdfViewer.SetMouseMode(MouseModes.AnnotCreate);
+                        pdfViewer.SetToolParam(linkAnnotArgs);
+                        pdfLinkUI.InitLinkAnnotArgs(linkAnnotArgs, pdfViewer.Document.PageCount);
+                    }
+                    annotationPanel = pdfLinkUI;
+                    break;
+                case CPDFAnnotationType.Audio:
+                    SoundAnnotArgs soundArgs = new SoundAnnotArgs();
+                    OpenFileDialog openAudioDialog = new OpenFileDialog();
+                    openAudioDialog.Filter = "Wave Files(*.wav)|*.wav|All Files(*.*;)|*.*;";
+                    if (openAudioDialog.ShowDialog() == true)
+                    {
+                        soundArgs.SoundFilePath = openAudioDialog.FileName;
+                        this.pdfViewer.SetMouseMode(MouseModes.AnnotCreate);
+                        pdfViewer.SetToolParam(soundArgs);
+                    }
+                    else
+                    {
+                        this.pdfViewer.SetMouseMode(MouseModes.PanTool);
+                        ClearAnnotationBar?.Invoke(this, EventArgs.Empty);
+                    }
+                    ClearPanel();
+                    break;
+                case CPDFAnnotationType.Image:
+                    StampAnnotArgs stampArgs = new StampAnnotArgs();
+                    stampArgs.Opacity = 1;
+                    stampArgs.Type = StampType.IMAGE_STAMP;
+                    OpenFileDialog openFileDialog = new OpenFileDialog();
+                    openFileDialog.Filter = "Image Files(*.jpg;*.jpeg;*.png;*.bmp)|*.jpg;*.jpeg;*.png;*.bmp;";
+                    if (openFileDialog.ShowDialog() == true)
+                    {
+                        stampArgs.ImagePath = openFileDialog.FileName;
+
+                        this.pdfViewer?.SetMouseMode(MouseModes.AnnotCreate);
+                        this.pdfViewer?.SetToolParam(stampArgs);
+                    }
+                    else
+                    {
+                        this.pdfViewer.SetMouseMode(MouseModes.PanTool);
+                    }
+                    ClearAnnotationBar?.Invoke(this, EventArgs.Empty);
+                    ClearPanel();
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        private void PdfFreehandUI_EraseChangeHandler(object sender, double e)
+        {
+            if (pdfViewer != null && eraseArgs != null)
+            {
+                eraseArgs.Thickness = e;
+            }
+        }
+
+        private void PdfFreehandUI_EraseClickHandler(object sender, bool e)
+        {
+            if (pdfViewer != null)
+            {
+                CPDFFreehandUI freehandUI = sender as CPDFFreehandUI;
+                if (e)
+                {
+                    annotArgs = pdfViewer.ToolManager.CurrentAnnotArgs;
+                    eraseArgs = new EraseArgs();
+                    eraseArgs.UIBorderColor = Color.FromArgb(0x1A, 0x00, 0x00, 0x00);
+                    eraseArgs.UIFillColor = Color.FromArgb(0x1A, 0x00, 0x00, 0x00);
+
+                    if (freehandUI != null)
+                    {
+                        eraseArgs.Thickness = freehandUI.GetEraseThickness();
+                    }
+                    else
+                    {
+                        eraseArgs.Thickness = 1;
+                    }
+
+                    disableClean = true;
+                    pdfViewer.SetMouseMode(MouseModes.AnnotCreate);
+                    pdfViewer.SetToolParam(eraseArgs);
+                    disableClean = false;
+                    EmptyMessage.Visibility = Visibility.Collapsed;
+                }
+                else
+                {
+                    pdfViewer.SetMouseMode(MouseModes.AnnotCreate);
+                    FreehandAnnotArgs freehandAnnotArgs = annotArgs as FreehandAnnotArgs;
+                    if (freehandAnnotArgs == null)
+                    {
+                        freehandAnnotArgs = new FreehandAnnotArgs();
+
+                        freehandAnnotArgs.InkColor = Colors.Red;
+                        freehandAnnotArgs.Transparency = 1;
+                        freehandAnnotArgs.LineWidth = 1;
+                        annotArgs = freehandAnnotArgs;
+                    }
+
+                    if (freehandUI != null)
+                    {
+                        freehandUI.PropertyChanged -= CPDFAnnotationControl_PropertyChanged;
+                        Dictionary<AnnotAttrib, object> attribDict = new Dictionary<AnnotAttrib, object>();
+                        attribDict[AnnotAttrib.Color] = freehandAnnotArgs.InkColor;
+                        attribDict[AnnotAttrib.Transparency] = freehandAnnotArgs.Transparency;
+                        attribDict[AnnotAttrib.Thickness] = freehandAnnotArgs.LineWidth;
+                        attribDict[AnnotAttrib.NoteText] = freehandAnnotArgs.Content;
+
+                        AnnotAttribEvent annotEvent = AnnotAttribEvent.GetAnnotAttribEvent(freehandAnnotArgs, attribDict);
+                        freehandUI.SetPresentAnnotAttrib(annotEvent);
+                        freehandUI.PropertyChanged += CPDFAnnotationControl_PropertyChanged;
+                        freehandUI.ClearAnnotAttribEvent();
+                    }
+                    pdfViewer.SetToolParam(freehandAnnotArgs);
+                }
+            }
+        }
+
+        /// <summary>
+        /// 创建临时注释面板
+        /// </summary>
+        /// <param name="annotArgsType"></param>
+        public void CreatTempAnnotationPanel(AnnotAttribEvent annotAttribEvent)
+        {
+            AnnotArgsType annotArgsType = annotAttribEvent.GetAnnotTypes();
+            switch (annotArgsType)
+            {
+                case AnnotArgsType.AnnotHighlight:
+                case AnnotArgsType.AnnotUnderline:
+                case AnnotArgsType.AnnotStrikeout:
+                case AnnotArgsType.AnnotSquiggly:
+                    tempAnnotationPanel = new CPDFMarkupUI();
+                    (tempAnnotationPanel as CPDFMarkupUI).InitWithAnnotationType(CPDFAnnotationDictionary.GetAnnotArgsTypeFromAnnotationType[annotArgsType]);
+                    (tempAnnotationPanel as CPDFMarkupUI).SetPresentAnnotAttrib(annotAttribEvent);
+                    break;
+
+                case AnnotArgsType.AnnotSquare:
+                case AnnotArgsType.AnnotCircle:
+                case AnnotArgsType.AnnotLine:
+                    tempAnnotationPanel = new CPDFShapeUI();
+                    (tempAnnotationPanel as CPDFShapeUI).InitWithAnnotationType(CPDFAnnotationDictionary.GetAnnotArgsTypeFromAnnotationType[annotArgsType]);
+                    (tempAnnotationPanel as CPDFShapeUI).SetPresentAnnotAttrib(annotAttribEvent);
+                    break;
+
+                case AnnotArgsType.AnnotFreehand:
+                    CPDFFreehandUI tempFreehandPanel = new CPDFFreehandUI();
+                    tempFreehandPanel.SetPresentAnnotAttrib(annotAttribEvent);
+                    tempFreehandPanel.EraseClickHandler += PdfFreehandUI_EraseClickHandler;
+                    tempFreehandPanel.EraseChangeHandler += PdfFreehandUI_EraseChangeHandler;
+                    tempAnnotationPanel = tempFreehandPanel;
+                    break;
+
+                case AnnotArgsType.AnnotFreeText:
+                    tempAnnotationPanel = new CPDFFreeTextUI();
+                    (tempAnnotationPanel as CPDFFreeTextUI).SetPresentAnnotAttrib(annotAttribEvent);
+                    break;
+
+                case AnnotArgsType.AnnotSticky:
+                    tempAnnotationPanel = new CPDFNoteUI();
+                    (tempAnnotationPanel as CPDFNoteUI).SetPresentAnnotAttrib(annotAttribEvent);
+                    break;
+
+                case AnnotArgsType.AnnotStamp:
+                    tempAnnotationPanel = new CPDFTempStampUI();
+                    (tempAnnotationPanel as CPDFTempStampUI).SetPresentAnnotAttrib(annotAttribEvent);
+                    break;
+                case AnnotArgsType.AnnotLink:
+                    tempAnnotationPanel = new CPDFLinkUI();
+                    (tempAnnotationPanel as CPDFLinkUI).SetPresentAnnotAttrib(annotAttribEvent, pdfViewer.Document.PageCount);
+                    break;
+                case AnnotArgsType.AnnotSound:
+                    tempAnnotationPanel = null;
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        /// <summary>
+        /// 根据注释类型显示注释面板
+        /// </summary>
+        /// <param name="annotationType"></param>
+        public void LoadAnnotationPanel(CPDFAnnotationType annotationType)
+        {
+            this.pdfViewer.SetMouseMode(MouseModes.PanTool);
+            currentAnnotationType = annotationType;
+            annotationPanel = GetAnnotationPanel();
+            InitAnnotationPanel(annotationType);
+            ShowCurrentAnnotPanel();
+        }
+
+        /// <summary>
+        /// 展示正在使用的属性面板
+        /// </summary>
+        private void ShowCurrentAnnotPanel()
+        {
+            if (annotationPanel != null)
+            {
+                if (annotationPanel is CPDFFreehandUI)
+                {
+                    (annotationPanel as CPDFFreehandUI)?.SetEraseCheck(false);
+                }
+                SetAnnotationPanel(annotationPanel);
+                ExpandPanel();
+                ChangeAnnotationData();
+                EmptyMessage.Visibility = Visibility.Collapsed;
+            }
+            else
+            {
+                EmptyMessage.Visibility = Visibility.Visible;
+                SetAnnotationPanel(null);
+                if (pdfViewer != null && pdfViewer.ToolManager.CurrentAnnotArgs is EraseArgs)
+                {
+                    EmptyMessage.Visibility = Visibility.Collapsed;
+                }
+            }
+        }
+
+        /// <summary>
+        /// 根据参数展开指定临时面板
+        /// </summary>
+        /// <param name="annotArgsType"></param>
+        private void ShowTempAnnotPanel(AnnotAttribEvent annotAttribEvent)
+        {
+            if (annotAttribEvent != null)
+            {
+                CreatTempAnnotationPanel(annotAttribEvent);
+                SetAnnotationPanel(tempAnnotationPanel);
+                ExpandPanel();
+                if (tempAnnotationPanel != null)
+                {
+                    EmptyMessage.Visibility = Visibility.Collapsed;
+                }
+                else
+                {
+                    EmptyMessage.Visibility = Visibility.Visible;
+                }
+            }
+        }
+
+        private void PDFViewer_AnnotActiveHandler(object sender, AnnotAttribEvent e)
+        {
+            SetAnnotEventData(e);
+        }
+
+        public void ClearPanel()
+        {
+            annotationPanel = null;
+            SetAnnotationPanel(annotationPanel);
+            EmptyMessage.Visibility = Visibility.Visible;
+        }
+
+        public void SetAnnotEventData(AnnotAttribEvent newData)
+        {
+            if (newData != null)
+            {
+                if (newData.IsAnnotCreateReset && isTempPanel)
+                {
+                    ShowCurrentAnnotPanel();
+                    isTempPanel = false;
+                }
+                else if (!newData.IsAnnotCreateReset)
+                {
+                    AnnotArgsType annotArgsType = newData.GetAnnotTypes();
+                    ShowTempAnnotPanel(newData);
+                    isTempPanel = true;
+                }
+            }
+            else
+            {
+                if (pdfViewer != null && pdfViewer.MouseMode == MouseModes.AnnotCreate)
+                {
+                    ShowCurrentAnnotPanel();
+                    isTempPanel = false;
+                }
+                else if (annotationPanel is CPDFStampUI && currentAnnotationType == CPDFAnnotationType.Stamp)
+                {
+                    ShowCurrentAnnotPanel();
+                }
+                else if (annotationPanel is CPDFSignatureUI && currentAnnotationType == CPDFAnnotationType.Signature)
+                {
+                    ShowCurrentAnnotPanel();
+                }
+                else if (disableClean == false)
+                {
+                    ClearPanel();
+                }
+            }
+        }
+    }
+}

+ 439 - 0
Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateSignatureDialog.xaml

@@ -0,0 +1,439 @@
+<Window x:Class="Compdfkit_Tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI.CPDFCreateSignatureDialog"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:Compdfkit_Tools.Annotation.PDFAnnotationPanel.PDFAnnotationUI"
+        xmlns:convert="clr-namespace:Compdfkit_Tools.Common" 
+        xmlns:common="clr-namespace:Compdfkit_Tools.Common"
+        mc:Ignorable="d"
+        AllowsTransparency="True" 
+        WindowStyle="None"
+        Loaded="Window_Loaded"
+        Title="CreateSignatureDialog" Height="422" Width="626">
+    <Window.Resources>
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="../../../Asset/Styles/ButtonStyle.xaml"></ResourceDictionary>
+                <ResourceDictionary Source="../../../Asset/Styles/ComboBoxStyle.xaml"></ResourceDictionary>
+            </ResourceDictionary.MergedDictionaries>
+            <convert:ReverseVisibilityConverter x:Key="ReverseVisibilityConverter"/>
+            <SolidColorBrush x:Key="TabItem.Selected.Background" Color="#FFFFFF"/>
+            <SolidColorBrush x:Key="TabItem.Selected.Border" Color="#ACACAC"/>
+            <Style x:Key="TabControlStyle1" TargetType="{x:Type TabControl}">
+                <Setter Property="Padding" Value="2"/>
+                <Setter Property="HorizontalContentAlignment" Value="Center"/>
+                <Setter Property="VerticalContentAlignment" Value="Center"/>
+                <Setter Property="Background" Value="{StaticResource TabItem.Selected.Background}"/>
+                <Setter Property="BorderBrush" Value="{StaticResource TabItem.Selected.Border}"/>
+                <Setter Property="BorderThickness" Value="0"/>
+                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
+                <Setter Property="Template">
+                    <Setter.Value>
+                        <ControlTemplate TargetType="{x:Type TabControl}">
+                            <Grid x:Name="templateRoot" ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
+                                <Grid.ColumnDefinitions>
+                                    <ColumnDefinition x:Name="ColumnDefinition0"/>
+                                    <ColumnDefinition x:Name="ColumnDefinition1" Width="0"/>
+                                </Grid.ColumnDefinitions>
+                                <Grid.RowDefinitions>
+                                    <RowDefinition x:Name="RowDefinition0" Height="Auto"/>
+                                    <RowDefinition x:Name="RowDefinition1" Height="*"/>
+                                </Grid.RowDefinitions>
+                                <TabPanel x:Name="headerPanel" Background="Transparent" Grid.Column="0" IsItemsHost="true" Margin="2" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1"/>
+                                <Border x:Name="contentPanel" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Grid.Column="0" KeyboardNavigation.DirectionalNavigation="Contained" Grid.Row="1" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local">
+                                    <ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
+                                </Border>
+                            </Grid>
+                            <ControlTemplate.Triggers>
+                                <Trigger Property="TabStripPlacement" Value="Bottom">
+                                    <Setter Property="Grid.Row" TargetName="headerPanel" Value="1"/>
+                                    <Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/>
+                                    <Setter Property="Height" TargetName="RowDefinition0" Value="*"/>
+                                    <Setter Property="Height" TargetName="RowDefinition1" Value="Auto"/>
+                                    <Setter Property="Margin" TargetName="headerPanel" Value="2,0,2,2"/>
+                                </Trigger>
+                                <Trigger Property="TabStripPlacement" Value="Left">
+                                    <Setter Property="Grid.Row" TargetName="headerPanel" Value="0"/>
+                                    <Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/>
+                                    <Setter Property="Grid.Column" TargetName="headerPanel" Value="0"/>
+                                    <Setter Property="Grid.Column" TargetName="contentPanel" Value="1"/>
+                                    <Setter Property="Width" TargetName="ColumnDefinition0" Value="Auto"/>
+                                    <Setter Property="Width" TargetName="ColumnDefinition1" Value="*"/>
+                                    <Setter Property="Height" TargetName="RowDefinition0" Value="*"/>
+                                    <Setter Property="Height" TargetName="RowDefinition1" Value="0"/>
+                                    <Setter Property="Margin" TargetName="headerPanel" Value="2,2,0,2"/>
+                                </Trigger>
+                                <Trigger Property="TabStripPlacement" Value="Right">
+                                    <Setter Property="Grid.Row" TargetName="headerPanel" Value="0"/>
+                                    <Setter Property="Grid.Row" TargetName="contentPanel" Value="0"/>
+                                    <Setter Property="Grid.Column" TargetName="headerPanel" Value="1"/>
+                                    <Setter Property="Grid.Column" TargetName="contentPanel" Value="0"/>
+                                    <Setter Property="Width" TargetName="ColumnDefinition0" Value="*"/>
+                                    <Setter Property="Width" TargetName="ColumnDefinition1" Value="Auto"/>
+                                    <Setter Property="Height" TargetName="RowDefinition0" Value="*"/>
+                                    <Setter Property="Height" TargetName="RowDefinition1" Value="0"/>
+                                    <Setter Property="Margin" TargetName="headerPanel" Value="0,2,2,2"/>
+                                </Trigger>
+                                <Trigger Property="IsEnabled" Value="false">
+                                    <Setter Property="TextElement.Foreground" TargetName="templateRoot" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
+                                </Trigger>
+                            </ControlTemplate.Triggers>
+                        </ControlTemplate>
+                    </Setter.Value>
+                </Setter>
+            </Style>
+            <Style x:Key="FocusVisual">
+                <Setter Property="Control.Template">
+                    <Setter.Value>
+                        <ControlTemplate>
+                            <Rectangle Margin="2" StrokeDashArray="1 2" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" SnapsToDevicePixels="true" StrokeThickness="1"/>
+                        </ControlTemplate>
+                    </Setter.Value>
+                </Setter>
+            </Style>
+            <LinearGradientBrush x:Key="TabItem.Static.Background" EndPoint="0,1" StartPoint="0,0">
+                <GradientStop Color="#F0F0F0" Offset="0.0"/>
+                <GradientStop Color="#E5E5E5" Offset="1.0"/>
+            </LinearGradientBrush>
+            <SolidColorBrush x:Key="TabItem.Static.Border" Color="#ACACAC"/>
+            <LinearGradientBrush x:Key="TabItem.MouseOver.Background" EndPoint="0,1" StartPoint="0,0">
+                <GradientStop Color="#ECF4FC" Offset="0.0"/>
+                <GradientStop Color="#DCECFC" Offset="1.0"/>
+            </LinearGradientBrush>
+            <SolidColorBrush x:Key="TabItem.MouseOver.Border" Color="#7EB4EA"/>
+            <SolidColorBrush x:Key="TabItem.Selected.Background1" Color="#FFFFFF"/>
+            <SolidColorBrush x:Key="TabItem.Selected.Border1" Color="#1460F3"/>
+            <SolidColorBrush x:Key="TabItem.Disabled.Background" Color="#F0F0F0"/>
+            <SolidColorBrush x:Key="TabItem.Disabled.Border" Color="#FFFFFF"/>
+            <Style x:Key="TabItemStyle1" TargetType="{x:Type TabItem}">
+                <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
+                <Setter Property="Foreground" Value="Black"/>
+                <Setter Property="Background" Value="{StaticResource TabItem.Static.Background}"/>
+                <Setter Property="BorderBrush" Value="{StaticResource TabItem.Static.Border}"/>
+                <Setter Property="Margin" Value="0"/>
+                <Setter Property="Padding" Value="6,2,6,2"/>
+                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
+                <Setter Property="VerticalContentAlignment" Value="Stretch"/>
+                <Setter Property="Template">
+                    <Setter.Value>
+                        <ControlTemplate TargetType="{x:Type TabItem}">
+                            <Grid x:Name="templateRoot" SnapsToDevicePixels="true">
+                                <Border x:Name="mainBorder" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,0,0,1" Margin="0">
+                                    <Border x:Name="innerBorder" Background="{StaticResource TabItem.Selected.Background1}" BorderBrush="{StaticResource TabItem.Selected.Border1}" BorderThickness="0,0,0,1" Margin="-1" Opacity="0"/>
+                                </Border>
+                                <ContentPresenter x:Name="contentPresenter" ContentSource="Header" Focusable="False" HorizontalAlignment="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
+                            </Grid>
+                            <ControlTemplate.Triggers>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/>
+                                    <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,1"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,1"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/>
+                                    <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,1"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,1"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/>
+                                    <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,1"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,1"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Background}"/>
+                                    <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.MouseOver.Border}"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,1"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,1"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
+                                    <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/>
+                                    <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,0"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,0"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
+                                    <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/>
+                                    <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,0"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,0"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
+                                    <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/>
+                                    <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,0"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,0"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsEnabled, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Opacity" TargetName="contentPresenter" Value="0.56"/>
+                                    <Setter Property="Background" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Background}"/>
+                                    <Setter Property="BorderBrush" TargetName="mainBorder" Value="{StaticResource TabItem.Disabled.Border}"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,0"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,0"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,0"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,0"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Left"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Panel.ZIndex" Value="1"/>
+                                    <Setter Property="Margin" Value="-2,-2,0,-2"/>
+                                    <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,1"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,1"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,0"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,0"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Bottom"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Panel.ZIndex" Value="1"/>
+                                    <Setter Property="Margin" Value="-2,0,-2,-2"/>
+                                    <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,1"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,1"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,0"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,0"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Right"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Panel.ZIndex" Value="1"/>
+                                    <Setter Property="Margin" Value="0,-2,-2,-2"/>
+                                    <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,1"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,1"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="false"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,0"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,0"/>
+                                </MultiDataTrigger>
+                                <MultiDataTrigger>
+                                    <MultiDataTrigger.Conditions>
+                                        <Condition Binding="{Binding IsSelected, RelativeSource={RelativeSource Self}}" Value="true"/>
+                                        <Condition Binding="{Binding TabStripPlacement, RelativeSource={RelativeSource AncestorType={x:Type TabControl}}}" Value="Top"/>
+                                    </MultiDataTrigger.Conditions>
+                                    <Setter Property="Panel.ZIndex" Value="1"/>
+                                    <Setter Property="Margin" Value="-2,-2,-2,0"/>
+                                    <Setter Property="Opacity" TargetName="innerBorder" Value="1"/>
+                                    <Setter Property="BorderThickness" TargetName="innerBorder" Value="0,0,0,1"/>
+                                    <Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,1"/>
+                                </MultiDataTrigger>
+                            </ControlTemplate.Triggers>
+                        </ControlTemplate>
+                    </Setter.Value>
+                </Setter>
+            </Style>
+            <Style x:Key="LinkButton" TargetType="Button">
+
+                <Setter Property="Width" Value="Auto"/>
+
+                <Setter Property="Template">
+                    <Setter.Value>
+                        <ControlTemplate TargetType="Button">
+                            <ContentPresenter Content="{TemplateBinding Content}" 
+                                  ContentTemplate="{TemplateBinding  ContentTemplate}"
+                                  VerticalAlignment="Center"
+                                  >
+                                <ContentPresenter.Resources>
+                                    <Style TargetType="{x:Type TextBlock}">
+                                        <Setter Property="TextDecorations" Value="Underline" />
+                                    </Style>
+                                </ContentPresenter.Resources>
+                            </ContentPresenter>
+                        </ControlTemplate>
+                    </Setter.Value>
+                </Setter>
+                <Setter Property="Foreground" Value="Blue" />
+                <Setter Property="Cursor" Value="Hand" />
+                <Style.Triggers>
+                    <Trigger Property="IsMouseOver" Value="true">
+                        <Setter Property="Foreground" Value="Red" />
+                    </Trigger>
+                </Style.Triggers>
+            </Style>
+        </ResourceDictionary>
+    </Window.Resources>
+    <Grid>
+        <Grid.RowDefinitions>
+            <RowDefinition Height="26"/>
+            <RowDefinition Height="*"/>
+            <RowDefinition Height="41"/>
+            <RowDefinition Height="11"/>
+        </Grid.RowDefinitions>
+        <TabControl Margin="23,0,23,0" Grid.Row="1" x:Name="CreateSignatureControl" SelectionChanged="CreateSignatureControl_SelectionChanged" Style="{DynamicResource TabControlStyle1}">
+            <TabItem Style="{DynamicResource TabItemStyle1}" x:Name="InputItem" Header="Trackpad">
+                <Grid>
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="11" />
+                        <RowDefinition Height="240" />
+                        <RowDefinition Height="14" />
+                        <RowDefinition Height="32" />
+                    </Grid.RowDefinitions>
+
+                    <Grid Grid.Column="1" Grid.Row="1">
+                        <InkCanvas x:Name="DrawinkCanvas" Loaded="DrawinkCanvas_Loaded" Unloaded="DrawinkCanvas_Unloaded" Background="#F2F3F5" Grid.ColumnSpan="2" Margin="0,0,0,-10" />
+                    </Grid>
+                    <StackPanel Grid.Row="3" Grid.Column="2" VerticalAlignment="Center" Orientation="Horizontal">
+                        <TextBlock Text="Line Width"  VerticalAlignment="Center" />
+                        <Slider  x:Name="StrokeWidthSlider" Width="96" Margin="12,0,0,0" Value="4" Minimum="1" IsSnapToTickEnabled="True"  Maximum="10" VerticalAlignment="Center" ValueChanged="StrokeWidth_ValueChanged"/>
+                        <TextBox Text="{Binding ElementName=StrokeWidthSlider, Path=Value,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="72" Height="32" VerticalContentAlignment="Center" TextChanged="TextBox_TextChanged"/>
+                    </StackPanel>
+                    <StackPanel
+                            Grid.Row="3"
+                            Grid.Column="2"
+                            HorizontalAlignment="Right"
+                            VerticalAlignment="Center"
+                            Orientation="Horizontal">
+                        <common:ColorPickerControl x:Name="ColorPickerControl" Loaded="ColorPickerControl_Loaded" ColorChanged="ColorPickerControl_ColorChanged" TransparentBtnProperty="Collapsed"></common:ColorPickerControl>
+                    </StackPanel>
+                </Grid>
+            </TabItem>
+            <TabItem Header="Keyboard" Style="{DynamicResource TabItemStyle1}">
+                <Grid>
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="11" />
+                        <RowDefinition Height="240" />
+                        <RowDefinition Height="14" />
+                        <RowDefinition Height="32" />
+                    </Grid.RowDefinitions>
+                    <TextBox     
+                    x:Name="InPutTextBox"    
+                    TextChanged="InPutTextBox_TextChanged" Grid.Row="1"
+                    BorderThickness="0"
+                    Background="#F2F3F5"
+                    HorizontalContentAlignment="Center"
+                    VerticalContentAlignment="Center" Grid.ColumnSpan="2"
+                        FontSize="45"/>
+                    <StackPanel Grid.Row="3" Orientation="Horizontal" Grid.ColumnSpan="2">
+                        <TextBlock Text="Font" VerticalAlignment="Center"/>
+                        <ComboBox Width="232"
+                        Style="{StaticResource ComboBoxStyle1}"
+                        Margin="8,0,0,0"
+                        SelectionChanged="TextName_SelectionChanged"
+                        x:Name="TextName"
+                        SelectedIndex="0"
+                        HorizontalAlignment="Left"
+                        VerticalAlignment="Center">
+                            <ComboBoxItem Content="Arial"/>
+                            <ComboBoxItem Content="Courier New" IsSelected="True"/>
+                            <ComboBoxItem Content="Times New Roman"/>
+                        </ComboBox>
+                    </StackPanel>
+                    <StackPanel
+                        Grid.Row="3"
+                        Grid.Column="1"
+                        HorizontalAlignment="Right"
+                        VerticalAlignment="Center"
+                        Orientation="Horizontal">
+                        <common:ColorPickerControl x:Name="TextColorPickerControl" Loaded="TextColorPickerControl_Loaded" ColorChanged="TextColorPickerControl_ColorChanged" TransparentBtnProperty="Collapsed"></common:ColorPickerControl>
+                    </StackPanel>
+                </Grid>
+            </TabItem>
+            <TabItem Header="Image" Style="{DynamicResource TabItemStyle1}">
+                <Grid
+                AllowDrop="True"
+                PreviewDrop="Grid_Drop"
+                    >
+                    <Grid.RowDefinitions>
+                        <RowDefinition Height="11" />
+                        <RowDefinition Height="240" />
+                        <RowDefinition Height="14" />
+                        <RowDefinition Height="32" />
+                    </Grid.RowDefinitions>
+                    <Grid Background="#F2F3F5" Grid.Row="1">
+                        <Grid.RowDefinitions>
+                            <RowDefinition Height="182"/>
+                            <RowDefinition Height="20"/>
+                            <RowDefinition Height="38"/>
+                        </Grid.RowDefinitions>
+                        <StackPanel x:Name="AddImagebackground" VerticalAlignment="Bottom">
+                            <Image Height="112" Width="112" Source="pack://application:,,,/com.compdfkit.tools;component/Asset/Resource/Annotation/Signature/Dropimage.png"/>
+                            <TextBlock Text="Drop image here"  HorizontalAlignment="Center"/>
+                            <TextBlock Text="or"  HorizontalAlignment="Center"/>
+                            <Button Style="{DynamicResource LinkButton}" HorizontalAlignment="Center" Content="Select a File" Click="OpenImage_Click"/>
+                        </StackPanel>
+                        <Image x:Name="ImageImage" SourceUpdated="ImageImage_SourceUpdated" Grid.RowSpan="3" HorizontalAlignment="Center" VerticalAlignment="Center"  Grid.ColumnSpan="4" Visibility="{Binding ElementName=AddImagebackground,Path=Visibility, Converter={StaticResource ReverseVisibilityConverter}}"/>
+                    </Grid>
+                </Grid>
+            </TabItem>
+        </TabControl>
+        <Grid Grid.Row="2" Margin="11,0,11,0" VerticalAlignment="Top">
+            <Button Height="32" Width="72" HorizontalAlignment="Left" Content="Clear" Click="Clear_Click"/>
+            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
+                <Button Width="81" Height="32" Content="Cancel" Click="Cancel_Click"/>
+                <Button x:Name="SaveBtn" Width="136" Height="32" Content="Save" Margin="8,0,0,0" Click="Save_Click" Style="{StaticResource ButtonStyle}" IsEnabled="False"/>
+            </StackPanel>
+        </Grid>
+    </Grid>
+</Window>

+ 0 - 0
Demo/Example/Compdfkit_Tools/Annotation/PDFAnnotationPanel/PDFAnnotationUI/CPDFCreateSignatureDialog.xaml.cs


Some files were not shown because too many files changed in this diff