Browse Source

compdfkit demo(windows) - ui调整,自绘titlebar(待完成)

LiuAoran 1 year ago
parent
commit
1891b643ac

+ 86 - 0
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Style/ButtonStyle.xaml

@@ -0,0 +1,86 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+    <Style x:Key="TitleBarButtonStyle" TargetType="{x:Type Button}">
+        <Setter Property="Background" Value="Transparent"></Setter>
+        <Setter Property="BorderThickness" Value="0" />
+        <Setter Property="HorizontalContentAlignment" Value="Center" />
+        <Setter Property="VerticalContentAlignment" Value="Center" />
+        <Setter Property="Padding" Value="0" />
+        <Setter Property="Width" Value="30" />
+        <Setter Property="Height" Value="30" />
+        <Setter Property="IsTabStop" Value="False" />
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="{x:Type Button}">
+                    <Border
+                        x:Name="border"
+                        Background="{TemplateBinding Background}"
+                        BorderBrush="{TemplateBinding BorderBrush}"
+                        BorderThickness="{TemplateBinding BorderThickness}"
+                        SnapsToDevicePixels="true">
+                        <ContentPresenter
+                            x:Name="contentPresenter"
+                            Margin="{TemplateBinding Padding}"
+                            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
+                            VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
+                            Focusable="False"
+                            RecognizesAccessKey="True"
+                            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
+                    </Border>
+                    <ControlTemplate.Triggers>
+                        <Trigger Property="IsMouseOver" Value="true">
+                            <Setter TargetName="border" Property="Background" Value="#2894FF" />
+                            <Setter TargetName="border" Property="BorderBrush" Value="#2894FF" />
+                        </Trigger>
+                        <Trigger Property="IsPressed" Value="true">
+                            <Setter TargetName="border" Property="Background" Value="#2894FF" />
+                            <Setter TargetName="border" Property="BorderBrush" Value="#FFFFFF" />
+                        </Trigger>
+                        <Trigger Property="IsEnabled" Value="false">
+                            <Setter TargetName="contentPresenter" Property="TextElement.Foreground" Value="#FFE2E3E6" />
+                            <Setter TargetName="contentPresenter" Property="Opacity" Value="0.5" />
+                        </Trigger>
+                    </ControlTemplate.Triggers>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <Style x:Key="CloseButtonStyle" TargetType="{x:Type Button}" BasedOn="{StaticResource TitleBarButtonStyle}">
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="{x:Type Button}">
+                    <Border
+                        x:Name="border"
+                        Background="{TemplateBinding Background}"
+                        BorderBrush="{TemplateBinding BorderBrush}"
+                        BorderThickness="{TemplateBinding BorderThickness}"
+                        SnapsToDevicePixels="true">
+                        <ContentPresenter
+                            x:Name="contentPresenter"
+                            Margin="{TemplateBinding Padding}"
+                            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
+                            VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
+                            Focusable="False"
+                            RecognizesAccessKey="True"
+                            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
+                    </Border>
+                    <ControlTemplate.Triggers>
+                        <Trigger Property="IsMouseOver" Value="true">
+                            <Setter TargetName="border" Property="Background" Value="#CC3333" />
+                            <Setter TargetName="border" Property="BorderBrush" Value="#CC3333" />
+                        </Trigger>
+                        <Trigger Property="IsPressed" Value="true">
+                            <Setter TargetName="border" Property="Background" Value="#CC3333" />
+                            <Setter TargetName="border" Property="BorderBrush" Value="#FFFFFF" />
+                        </Trigger>
+                        <Trigger Property="IsEnabled" Value="false">
+                            <Setter TargetName="contentPresenter" Property="TextElement.Foreground" Value="#FFE2E3E6" />
+                            <Setter TargetName="contentPresenter" Property="Opacity" Value="0.5" />
+                        </Trigger>
+                    </ControlTemplate.Triggers>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+</ResourceDictionary>

+ 197 - 0
compdfkit_demo_windows/compdfkit/compdfkit-tools/Asset/Style/MenuItemStyle.xaml

@@ -0,0 +1,197 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+    <Style x:Key="Main_MenuItem" TargetType="MenuItem">
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="{x:Type MenuItem}">
+                    <Border x:Name="border" Background="#EFEFEF" BorderThickness="0" Height="30">
+                        <Grid Margin="20,0,20,0">
+                                <ContentPresenter x:Name="contentPresenter"
+                                                  ContentSource="Header" 
+                                                  TextBlock.Foreground="#000000" 
+                                                  TextBlock.FontFamily="SegoeUI"
+                                                  TextBlock.FontSize="15"
+                                                  HorizontalAlignment="Center"
+                                                  VerticalAlignment="Center">
+                                </ContentPresenter>
+                            </Grid>
+                    </Border>
+                    <ControlTemplate.Triggers>
+                        <Trigger Property="IsHighlighted" Value="True">
+                            <Setter Property="Background" TargetName="border" Value="#2894FF"></Setter>
+                            <Setter Property="BorderBrush" TargetName="border" Value="#2894FF"></Setter>
+                            <Setter Property="TextBlock.Foreground" TargetName="contentPresenter" Value="#FFFFFF"></Setter>
+                        </Trigger>
+                    </ControlTemplate.Triggers>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <Style x:Key="Dropdown_MenuItem" TargetType="MenuItem">
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="{x:Type MenuItem}">
+                    <Border x:Name="border" 
+                                Background="#EFEFEF"
+                                BorderThickness="0"
+                                Height="30">
+                        <Grid>
+                            <ContentPresenter x:Name="contentPresenter"
+                                    ContentSource="Header" 
+                                                  TextBlock.Foreground="#000000" 
+                                                  TextBlock.FontFamily="SegoeUI"
+                                                  TextBlock.FontSize="15"
+                                                  HorizontalAlignment="Center"
+                                                  VerticalAlignment="Center"
+                                                  Margin="20,0,20,0">
+                            </ContentPresenter>
+                            <Popup x:Name="Part_Popup"
+                                       AllowsTransparency="True"
+                                       IsOpen="{Binding IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}"
+                                       Placement="Bottom"
+                                       PopupAnimation="Fade">
+                                <Border Name="SubMenuBorder" 
+                                            Background="#484546" 
+                                            BorderBrush="#484546">
+                                    <ScrollViewer x:Name="SubMenuScrollViewer" Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}">
+                                        <Grid RenderOptions.ClearTypeHint="Enabled">
+                                            <Canvas HorizontalAlignment="Left" VerticalAlignment="Top"></Canvas>
+                                            <ItemsPresenter x:Name="ItemsPresenter"></ItemsPresenter>
+                                        </Grid>
+                                    </ScrollViewer>
+                                </Border>
+                            </Popup>
+                        </Grid>
+                    </Border>
+
+                    <ControlTemplate.Triggers>
+                        <Trigger Property="IsSuspendingPopupAnimation"
+                                     Value="True">
+                            <Setter Property="PopupAnimation"
+                                        TargetName="Part_Popup"
+                                        Value="None"></Setter>
+                        </Trigger>
+                        <Trigger Property="IsHighlighted" Value="True">
+                            <Setter Property="Background" TargetName="border" Value="#2894FF"></Setter>
+                            <Setter Property="BorderBrush" TargetName="border" Value="#2894FF"></Setter>
+                            <Setter Property="TextBlock.Foreground" TargetName="contentPresenter" Value="#FFFFFF"></Setter>
+                        </Trigger>
+                    </ControlTemplate.Triggers>
+
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+
+    <Style x:Key="Sub_MenuItem" TargetType="MenuItem">
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="{x:Type MenuItem}">
+                    <Border x:Name="border" 
+                                Background="#FFFFFF" 
+                                BorderThickness="0" 
+                                Height="30" >
+                        <Grid Margin="20,0,20,0">
+                            <ContentPresenter x:Name="contentPresenter"
+                                    ContentSource="Header" 
+                                                  TextBlock.Foreground="#000000" 
+                                                  TextBlock.FontFamily="SegoeUI"
+                                                  TextBlock.FontSize="15"
+                                                  HorizontalAlignment="Left"
+                                                  VerticalAlignment="Center">
+                            </ContentPresenter>
+                        </Grid>
+                    </Border>
+                    <ControlTemplate.Triggers>
+                        <Trigger Property="IsHighlighted" Value="True">
+                            <Setter Property="Background" TargetName="border" Value="#2894FF"></Setter>
+                            <Setter Property="BorderBrush" TargetName="border" Value="#2894FF"></Setter>
+                            <Setter Property="TextBlock.Foreground" TargetName="contentPresenter" Value="#FFFFFF"></Setter>
+                        </Trigger>
+                    </ControlTemplate.Triggers>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+    
+     <Style x:Key="Sub_Dropdown_MenuItem" TargetType="MenuItem">
+            <Setter Property="Template">
+                <Setter.Value>
+                    <ControlTemplate TargetType="{x:Type MenuItem}">
+                        <Border x:Name="border" 
+                                Background="#FFFFFF" 
+                                BorderThickness="0" 
+                                Height="30">
+                            <Grid Margin="20,0,20,0">
+                                <ContentPresenter x:Name="contentPresenter"
+                                    ContentSource="Header" 
+                                                  TextBlock.Foreground="#000000" 
+                                                  TextBlock.FontFamily="SegoeUI"
+                                                  TextBlock.FontSize="15"
+                                                  HorizontalAlignment="Left"
+                                                  VerticalAlignment="Center"
+                                                  >
+                                </ContentPresenter>
+                                <Popup x:Name="Part_Popup"
+                                       AllowsTransparency="True"
+                                       IsOpen="{Binding IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}"
+                                       Placement="Right" 
+                                       PopupAnimation="Fade">
+
+                                    <Border Name="SubMenuBorder" 
+                                            Background="#484546" 
+                                            BorderBrush="#FFFFFF">
+                                        <ScrollViewer x:Name="SubMenuScrollViewer" Style="{DynamicResource {ComponentResourceKey ResourceId=MenuScrollViewer, TypeInTargetAssembly={x:Type FrameworkElement}}}">
+                                            <Grid RenderOptions.ClearTypeHint="Enabled">
+                                                <Canvas HorizontalAlignment="Left" VerticalAlignment="Top"></Canvas>
+                                                <ItemsPresenter x:Name="ItemsPresenter"></ItemsPresenter>
+                                            </Grid>
+                                        </ScrollViewer>
+                                    </Border>
+                                </Popup>
+                            </Grid>
+                        </Border>
+                        <ControlTemplate.Triggers>
+                            <Trigger Property="IsHighlighted" Value="True">
+                                <Setter Property="Background" TargetName="border" Value="#2894FF"></Setter>
+                                <Setter Property="BorderBrush" TargetName="border" Value="#2894FF"></Setter>
+                                <Setter Property="TextBlock.Foreground" TargetName="contentPresenter" Value="#FFFFFF"></Setter>
+                            </Trigger>
+                        </ControlTemplate.Triggers>
+                    </ControlTemplate>
+                </Setter.Value>
+            </Setter>
+        </Style>
+
+    <Style x:Key="Dropdown_Sub_MenuItem" TargetType="MenuItem">
+        <Setter Property="Template">
+            <Setter.Value>
+                <ControlTemplate TargetType="{x:Type MenuItem}">
+                    <Border x:Name="border" 
+                                Background="#FFFFFF" 
+                                BorderThickness="0" 
+                                Height="30">
+                        <Grid Margin="20,0,20,0">
+                            <ContentPresenter x:Name="contentPresenter"
+                                    ContentSource="Header" 
+                                                  TextBlock.Foreground="#000000" 
+                                                  TextBlock.FontFamily="SegoeUI"
+                                                  TextBlock.FontSize="15"
+                                                  HorizontalAlignment="Left"
+                                                  VerticalAlignment="Center">
+                            </ContentPresenter>
+                        </Grid>
+                    </Border>
+                    <ControlTemplate.Triggers>
+                        <Trigger Property="IsHighlighted" Value="True">
+                            <Setter Property="Background" TargetName="border" Value="#2894FF"></Setter>
+                            <Setter Property="BorderBrush" TargetName="border" Value="#2894FF"></Setter>
+                            <Setter Property="TextBlock.Foreground" TargetName="contentPresenter" Value="#FFFFFF"></Setter>
+                        </Trigger>
+                    </ControlTemplate.Triggers>
+                </ControlTemplate>
+            </Setter.Value>
+        </Setter>
+    </Style>
+</ResourceDictionary>

+ 0 - 14
compdfkit_demo_windows/compdfkit/compdfkit-tools/Assets/Styles/TextBoxStyle.xaml

@@ -1,14 +0,0 @@
-<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
-                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-    <Style x:Key="style.clear" TargetType="{x:Type Button}">
-        <Setter Property="BorderThickness" Value="0"></Setter>
-        <Setter Property="Background" Value="Transparent"></Setter>
-        <Setter Property="Template">
-            <Setter.Value>
-                <ControlTemplate TargetType="Button">
-                    <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"></ContentPresenter>
-                </ControlTemplate>
-            </Setter.Value>
-        </Setter>
-    </Style>
-</ResourceDictionary>

+ 65 - 0
compdfkit_demo_windows/compdfkit/compdfkit-tools/PDFControl/CommonControl/TitleBarControl.xaml

@@ -0,0 +1,65 @@
+<UserControl x:Class="compdfkit_tools.PDFControl.TitleBarControl"
+             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.PDFControl"
+             xmlns:toolsUI="clr-namespace:compdfkit_tools.PDFControlUI"
+             mc:Ignorable="d" 
+             d:DesignHeight="30" d:DesignWidth="1280">
+    <UserControl.Resources>
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="../../Asset/Style/MenuItemStyle.xaml"></ResourceDictionary>
+            </ResourceDictionary.MergedDictionaries>
+        </ResourceDictionary>
+    </UserControl.Resources>
+    <Grid x:Name="TitleBarGrid" Background="#EFEFEF" HorizontalAlignment="Stretch"
+          MouseLeftButtonDown="TitleBarGrid_MouseLeftButtonDown"
+          MouseMove="TitleBarGrid_MouseMove"
+          MouseLeftButtonUp="TitleBarGrid_MouseLeftButtonUp">
+        <toolsUI:TitleBarControlUI x:Name="TitleBarControlUI"></toolsUI:TitleBarControlUI>
+        <Grid Height="30" Width="auto" HorizontalAlignment="Left">
+            <StackPanel Orientation="Horizontal">
+                <Menu Height="30" 
+                  Width="auto" 
+                  Background="Transparent"
+                  VerticalAlignment="Top"
+                  HorizontalAlignment="Left">
+                    <MenuItem Header="File" Style="{StaticResource Dropdown_MenuItem}">
+                        <MenuItem Header="Open File" Style="{StaticResource Sub_MenuItem}"></MenuItem>
+                        <MenuItem Header="Create File" Style="{StaticResource Sub_MenuItem}"></MenuItem>
+                    </MenuItem>
+                </Menu>
+
+                <Menu Height="30" 
+                  Width="auto" 
+                  Background="Transparent"
+                  VerticalAlignment="Top"
+                  HorizontalAlignment="Left">
+                    <MenuItem Header="Settings" Style="{StaticResource Dropdown_MenuItem}">
+                        <MenuItem Header="Theme" Style="{StaticResource Sub_Dropdown_MenuItem}">
+                            <MenuItem Header="Light" Style="{StaticResource Dropdown_Sub_MenuItem}"></MenuItem>
+                            <MenuItem Header="Dark" Style="{StaticResource Dropdown_Sub_MenuItem}"></MenuItem>
+                        </MenuItem>
+                        <MenuItem Header="Mode" Style="{StaticResource Sub_Dropdown_MenuItem}">
+                            <MenuItem Header="View" Style="{StaticResource Dropdown_Sub_MenuItem}"></MenuItem>
+                        </MenuItem>
+                    </MenuItem>
+                </Menu>
+
+                <Menu Height="30" 
+                  Width="auto" 
+                  Background="Transparent"
+                  VerticalAlignment="Top"
+                  HorizontalAlignment="Left">
+                    <MenuItem Header="Help" Style="{StaticResource Dropdown_MenuItem}">
+                        <MenuItem Header="Guide" Style="{StaticResource Sub_MenuItem }"></MenuItem>
+                        <MenuItem Header="Api Reference" Style="{StaticResource Sub_MenuItem }"></MenuItem>
+                        <MenuItem Header="Contect us" Style="{StaticResource Sub_MenuItem }"></MenuItem>
+                    </MenuItem>
+                </Menu>
+            </StackPanel>
+        </Grid>
+    </Grid>
+</UserControl>

+ 84 - 0
compdfkit_demo_windows/compdfkit/compdfkit-tools/PDFControl/CommonControl/TitleBarControl.xaml.cs

@@ -0,0 +1,84 @@
+using compdfkit_tools.PDFControlUI;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace compdfkit_tools.PDFControl
+{
+    /// <summary>
+    /// TitleBarControl.xaml 的交互逻辑
+    /// </summary>
+    /// 
+    public partial class TitleBarControl : UserControl
+    {
+        private bool isDragging = false;
+        private Point startPoint;
+
+        public TitleBarControl()
+        {
+            InitializeComponent();
+            TitleBarControlUI.MinimizeEvent += TitleBarControlUI_MinimizeEvent;
+            TitleBarControlUI.RestoreEvent += TitleBarControlUI_RestoreEvent;
+            TitleBarControlUI.CloseAppEvent += TitleBarControlUI_CloseAppEvent;
+        }
+
+        private void TitleBarControlUI_CloseAppEvent(object sender, EventArgs e)
+        {
+            System.Windows.SystemCommands.CloseWindow(Window.GetWindow(this));
+
+        }
+
+        private void TitleBarControlUI_RestoreEvent(object sender, EventArgs e)
+        {
+            if (Window.GetWindow(this).WindowState == WindowState.Maximized)
+            {
+                System.Windows.SystemCommands.RestoreWindow(Window.GetWindow(this));
+            }
+            else
+            {
+                System.Windows.SystemCommands.MaximizeWindow(Window.GetWindow(this));
+            }
+        }
+
+        private void TitleBarControlUI_MinimizeEvent(object sender, EventArgs e)
+        {
+            System.Windows.SystemCommands.MinimizeWindow(Window.GetWindow(this));
+        }
+
+        private void TitleBarGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            isDragging = true;
+            startPoint = e.GetPosition(this);
+        }
+
+        private void TitleBarGrid_MouseMove(object sender, MouseEventArgs e)
+        {
+            if (isDragging && e.LeftButton == MouseButtonState.Pressed)
+            {
+                var currentPosition = e.GetPosition(this.Parent as UIElement);
+                var offset = currentPosition - startPoint;
+
+                Window.GetWindow(this).Left += offset.X;
+                Window.GetWindow(this).Top += offset.Y;
+            }
+        }
+
+        private void TitleBarGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
+        {
+            // 结束拖动
+            isDragging = false;
+            Mouse.Capture(null);
+        }
+    }
+}

+ 47 - 0
compdfkit_demo_windows/compdfkit/compdfkit-tools/PDFControlUI/CommonControlUI/TitleBarControlUI.xaml

@@ -0,0 +1,47 @@
+<UserControl x:Class="compdfkit_tools.PDFControlUI.TitleBarControlUI"
+             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" 
+             d:DesignHeight="30" d:DesignWidth="1280">
+    <UserControl.Resources>
+        <ResourceDictionary>
+            <ResourceDictionary.MergedDictionaries>
+                <ResourceDictionary Source="../../Asset/Style/ButtonStyle.xaml"></ResourceDictionary>
+            </ResourceDictionary.MergedDictionaries>
+        </ResourceDictionary>
+    </UserControl.Resources>
+    <Grid Background="Transparent">
+        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
+            <Button x:Name="MinSizeButton" Style="{StaticResource TitleBarButtonStyle}" Click="MinSizeButton_Click">
+                <Polygon Fill="Black" Points="14 7 14 8 2 8 2 7">
+                    <Polygon.RenderTransform>
+                        <TransformGroup>
+                            <TranslateTransform Y="-3" />
+                        </TransformGroup>
+                    </Polygon.RenderTransform>
+                </Polygon>
+            </Button>
+            <Button x:Name="RestoreButton" Style="{StaticResource TitleBarButtonStyle}" Click="RestoreButton_Click">
+                <Grid>
+                    <Grid>
+                        <Path
+                        x:Name="ico_max"
+                        Data="M14,2 L14,14 L2,14 L2,2 L14,2 Z M13,3 L3,3 L3,13 L13,13 L13,3 Z"
+                        Fill="Black"
+                        Visibility="Collapsed" />
+                    </Grid>
+                    <Grid>
+                        <Path Data="M11,5 L11,14 L2,14 L2,5 L11,5 Z M10,6 L3,6 L3,13 L10,13 L10,6 Z" Fill="black" />
+                        <Polygon Fill="black" Points="14 2 14 11 11 11 11 10 13 10 13 3 6 3 6 5 5 5 5 2" />
+                    </Grid>
+                </Grid>
+               </Button>
+            <Button x:Name="CloseAppButton" Style="{StaticResource CloseButtonStyle}" Click="CloseAppButton_Click">
+                <Polygon Fill="black" Points="11.2919922 12 12 11.2919922 6.70800781 6 12 0.708007813 11.2919922 0 6 5.29199219 0.708007812 9.76996262e-15 -2.27456942e-13 0.708007813 5.29199219 6 0 11.2919922 0.708007812 12 6 6.70800781" />
+            </Button>
+        </StackPanel>
+    </Grid>
+</UserControl>

+ 47 - 0
compdfkit_demo_windows/compdfkit/compdfkit-tools/PDFControlUI/CommonControlUI/TitleBarControlUI.xaml.cs

@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace compdfkit_tools.PDFControlUI
+{
+    /// <summary>
+    /// TitleBarControlUI.xaml 的交互逻辑
+    /// </summary>
+    public partial class TitleBarControlUI : UserControl
+    {
+        public event EventHandler MinimizeEvent;
+        public event EventHandler RestoreEvent;
+        public event EventHandler CloseAppEvent;
+
+        public TitleBarControlUI()
+        {
+            InitializeComponent();
+        }
+
+        private void MinSizeButton_Click(object sender, RoutedEventArgs e)
+        {
+            MinimizeEvent?.Invoke(sender, e);
+        }
+
+        private void RestoreButton_Click(object sender, RoutedEventArgs e)
+        {
+            RestoreEvent?.Invoke(sender, e);
+        }
+
+        private void CloseAppButton_Click(object sender, RoutedEventArgs e)
+        {
+            CloseAppEvent?.Invoke(sender, e);
+        }
+    }
+}

+ 2 - 9
compdfkit_demo_windows/compdfkit/compdfkit-tools/PDFView/PDFDisplaySettingsControls/BrowseModeControl.xaml.cs

@@ -15,19 +15,12 @@ using System.Windows.Shapes;
 
 namespace compdfkit_tools
 {
-    public enum BrowseMode
-    {
-        SinglePageMode,
-        DoublePageMode,
-        BookMode
-    }
-
     /// <summary>
     /// browsemode.xaml 的交互逻辑
     /// </summary>
     public partial class BrowseModeControl : UserControl
     {
-        public event EventHandler<string> SetBrowsingMode;
+        public event EventHandler<string> SetBrowsingModeEvent;
 
         public BrowseModeControl()
         {
@@ -50,7 +43,7 @@ namespace compdfkit_tools
 
                     break;
             }
-            SetBrowsingMode?.Invoke(sender, browsingModeRadioButton.Name);
+            SetBrowsingModeEvent?.Invoke(sender, browsingModeRadioButton.Name);
         }
     }
 }

+ 21 - 1
compdfkit_demo_windows/compdfkit/compdfkit-tools/compdfkit-tools.csproj

@@ -46,6 +46,8 @@
     </Reference>
     <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" />
@@ -61,6 +63,12 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Helper\CommonHelper.cs" />
+    <Compile Include="PDFControlUI\CommonControlUI\TitleBarControlUI.xaml.cs">
+      <DependentUpon>TitleBarControlUI.xaml</DependentUpon>
+    </Compile>
+    <Compile Include="PDFControl\CommonControl\TitleBarControl.xaml.cs">
+      <DependentUpon>TitleBarControl.xaml</DependentUpon>
+    </Compile>
     <Compile Include="PDFSearch\SearchInputControl.xaml.cs">
       <DependentUpon>SearchInputControl.xaml</DependentUpon>
     </Compile>
@@ -118,6 +126,18 @@
   </ItemGroup>
   <ItemGroup />
   <ItemGroup>
+    <Page Include="Asset\Style\MenuItemStyle.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="PDFControlUI\CommonControlUI\TitleBarControlUI.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
+    <Page Include="PDFControl\CommonControl\TitleBarControl.xaml">
+      <SubType>Designer</SubType>
+      <Generator>MSBuild:Compile</Generator>
+    </Page>
     <Page Include="PDFSearch\SearchInputControl.xaml">
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
@@ -126,7 +146,7 @@
       <Generator>MSBuild:Compile</Generator>
       <SubType>Designer</SubType>
     </Page>
-    <Page Include="Assets\Styles\TextBoxStyle.xaml">
+    <Page Include="Asset\Style\ButtonStyle.xaml">
       <SubType>Designer</SubType>
       <Generator>MSBuild:Compile</Generator>
     </Page>

+ 19 - 5
compdfkit_demo_windows/compdfkit/viewer-ctrl-demo/MainWindow.xaml

@@ -5,17 +5,32 @@
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:viewer_ctrl_demo"
         xmlns:tools="clr-namespace:compdfkit_tools;assembly=com.compdfkit.tools"
+        xmlns:pdfcontrol="clr-namespace:compdfkit_tools.PDFControl;assembly=com.compdfkit.tools"
         xmlns:custools="clr-namespace:viewer_ctrl_demo.PDFDisplaySettings"
         mc:Ignorable="d"
-        Title="MainWindow" Height="500" Width="800" WindowStartupLocation="CenterScreen">
+        Title="MainWindow" Height="500" Width="800"  WindowStartupLocation="CenterScreen"
+        WindowStyle="None"
+        AllowsTransparency="True"
+        Background="Transparent">
+
     <Grid>
         <Grid.RowDefinitions>
-            <RowDefinition Height="40"></RowDefinition>
+            <RowDefinition Height="30"></RowDefinition>
             <RowDefinition></RowDefinition>
+            <RowDefinition Height="30"></RowDefinition>
         </Grid.RowDefinitions>
 
-        <!--顶部工具栏-->
         <Grid>
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="39*"/>
+                <ColumnDefinition Width="121*"/>
+            </Grid.ColumnDefinitions>
+        </Grid>
+        
+        <pdfcontrol:TitleBarControl Grid.ColumnSpan="2"></pdfcontrol:TitleBarControl>
+
+        <!--底部工具栏-->
+        <Grid Grid.Row="2" Background="#FFFFFF">
             <Border BorderBrush="{StaticResource color.border.normal}" BorderThickness="1">
                 <StackPanel Orientation="Horizontal">
                     <Button Name="LogoButton" Height="35" Width="35" Margin="5,0,0,0" Click="LogoButton_Click">
@@ -23,7 +38,6 @@
                             <ContextMenu x:Name="LogoMenu"></ContextMenu>
                         </Button.ContextMenu>
                     </Button>
-                    <ComboBox x:Name="PreviewModeComboBox" Height="30" Width="100" Margin="10,0,0,0" IsEnabled="False"></ComboBox>
                     <ToggleButton x:Name="DisplaySettingsToggleButton" Height="40" Width="40" Margin="10,0,0,0" Click="DisplaySettingsToggleButton_Click">S</ToggleButton>
                     <Popup x:Name="DisplaySettingsPopup" PlacementTarget="{Binding ElementName=DisplaySettingsToggleButton}" Margin="0,5,0,0" Placement="Bottom" IsOpen="False">
                         <Border Background="White" BorderBrush="Black" BorderThickness="1" Padding="10">
@@ -84,7 +98,7 @@
             <Border Name="BotaToolContainer" Grid.Column="1" BorderThickness="0,0,1,0" BorderBrush="Gray" Visibility="Collapsed">
 
             </Border>
-           
+
             <!--PDFViewer-->
             <Border Grid.Column="2" x:Name="PDFGrid" Background="{StaticResource color.bg.mainpage}">
             </Border>

+ 3 - 12
compdfkit_demo_windows/compdfkit/viewer-ctrl-demo/MainWindow.xaml.cs

@@ -29,11 +29,13 @@ namespace viewer_ctrl_demo
     /// </summary>
     public partial class MainWindow : Window
     {
+        private Point startPoint;
+
         public CPDFViewer pdfViewer;
+
         public MainWindow()
         {
             InitializeComponent();
-            AddPreViewModes();
             AddMenuItemToLogoButton();
             PDFScalingControl.Loaded += PDFScalingControl_Loaded;
             PDFPageTurningControl.Loaded += PDFPageTurningControl_Loaded;
@@ -233,17 +235,6 @@ namespace viewer_ctrl_demo
             }
         }
 
-        public void AddPreViewModes()
-        {
-            // 创建ComboBoxItem元素
-            ComboBoxItem ViewerMode = new ComboBoxItem();
-            ViewerMode.Content = "预览模式";
-            ViewerMode.IsSelected = true; // 将A设置为首选项
-
-            // 添加ComboBoxItem元素到ComboBox中
-            PreviewModeComboBox.Items.Add(ViewerMode);
-        }
-
         private void LogoButton_Click(object sender, RoutedEventArgs e)
         {
             Button button = sender as Button;

+ 1 - 1
compdfkit_demo_windows/compdfkit/viewer-ctrl-demo/pdfdisplaysettings/PDFDisplaySettings.xaml.cs

@@ -33,7 +33,7 @@ namespace viewer_ctrl_demo.PDFDisplaySettings
 
         private void BrowseModeControl_Loaded(object sender, RoutedEventArgs e)
         {
-            BrowseModeControl.SetBrowsingMode += BrowseModeControl_SetBrowsingMode;
+            BrowseModeControl.SetBrowsingModeEvent += BrowseModeControl_SetBrowsingMode;
         }
 
         private void BrowseModeControl_SetBrowsingMode(object sender, string e)