diff --git a/Ink Canvas.sln b/Ink Canvas.sln
index 98c1f04..5c68c00 100644
--- a/Ink Canvas.sln
+++ b/Ink Canvas.sln
@@ -11,7 +11,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InkCanvasForClass.IACoreHel
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InkCanvasForClass.PowerPoint.InteropHelper", "InkCanvasForClass.PowerPoint.InteropHelper\InkCanvasForClass.PowerPoint.InteropHelper.csproj", "{2D8A9217-465A-4F57-BD58-CE02450390C4}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InkCanvasForClass.PowerPoint.Vsto", "InkCanvasForClass.PowerPoint.Vsto\InkCanvasForClass.PowerPoint.Vsto.csproj", "{E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InkCanvasForClass.PowerPoint.VstoPlugin", "InkCanvasForClass.PowerPoint.VstoPlugin\InkCanvasForClass.PowerPoint.VstoPlugin.csproj", "{8C593467-E54D-4FA7-881C-78F3CC48A867}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -152,36 +152,36 @@ Global
{2D8A9217-465A-4F57-BD58-CE02450390C4}.x86 Debug|x64.Build.0 = Debug|Any CPU
{2D8A9217-465A-4F57-BD58-CE02450390C4}.x86 Debug|x86.ActiveCfg = Debug|Any CPU
{2D8A9217-465A-4F57-BD58-CE02450390C4}.x86 Debug|x86.Build.0 = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Debug|ARM.Build.0 = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Debug|ARM64.ActiveCfg = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Debug|ARM64.Build.0 = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Debug|x64.ActiveCfg = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Debug|x64.Build.0 = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Debug|x86.ActiveCfg = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Debug|x86.Build.0 = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Release|Any CPU.Build.0 = Release|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Release|ARM.ActiveCfg = Release|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Release|ARM.Build.0 = Release|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Release|ARM64.ActiveCfg = Release|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Release|ARM64.Build.0 = Release|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Release|x64.ActiveCfg = Release|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Release|x64.Build.0 = Release|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Release|x86.ActiveCfg = Release|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Release|x86.Build.0 = Release|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|Any CPU.Build.0 = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|ARM.ActiveCfg = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|ARM.Build.0 = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|ARM64.ActiveCfg = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|ARM64.Build.0 = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|x64.ActiveCfg = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|x64.Build.0 = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|x86.ActiveCfg = Debug|Any CPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|x86.Build.0 = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Debug|ARM.Build.0 = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Debug|x64.Build.0 = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Debug|x86.Build.0 = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Release|ARM.ActiveCfg = Release|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Release|ARM.Build.0 = Release|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Release|ARM64.Build.0 = Release|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Release|x64.ActiveCfg = Release|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Release|x64.Build.0 = Release|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Release|x86.ActiveCfg = Release|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.Release|x86.Build.0 = Release|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.x86 Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.x86 Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.x86 Debug|ARM.ActiveCfg = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.x86 Debug|ARM.Build.0 = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.x86 Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.x86 Debug|ARM64.Build.0 = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.x86 Debug|x64.ActiveCfg = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.x86 Debug|x64.Build.0 = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.x86 Debug|x86.ActiveCfg = Debug|Any CPU
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}.x86 Debug|x86.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/InkCanvasForClass.PowerPoint.Vsto/InkCanvasForClassPPTVsto_TemporaryKey.pfx b/InkCanvasForClass.PowerPoint.Vsto/InkCanvasForClassPPTVsto_TemporaryKey.pfx
deleted file mode 100644
index 8833e31..0000000
Binary files a/InkCanvasForClass.PowerPoint.Vsto/InkCanvasForClassPPTVsto_TemporaryKey.pfx and /dev/null differ
diff --git a/InkCanvasForClass.PowerPoint.Vsto/MainRibbon.xml b/InkCanvasForClass.PowerPoint.Vsto/MainRibbon.xml
deleted file mode 100644
index 738941c..0000000
--- a/InkCanvasForClass.PowerPoint.Vsto/MainRibbon.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/InkCanvasForClass.PowerPoint.Vsto/InkCanvasForClass.PowerPoint.Vsto.csproj b/InkCanvasForClass.PowerPoint.VstoPlugin/InkCanvasForClass.PowerPoint.VstoPlugin.csproj
similarity index 93%
rename from InkCanvasForClass.PowerPoint.Vsto/InkCanvasForClass.PowerPoint.Vsto.csproj
rename to InkCanvasForClass.PowerPoint.VstoPlugin/InkCanvasForClass.PowerPoint.VstoPlugin.csproj
index 59ef19d..b15bce4 100644
--- a/InkCanvasForClass.PowerPoint.Vsto/InkCanvasForClass.PowerPoint.Vsto.csproj
+++ b/InkCanvasForClass.PowerPoint.VstoPlugin/InkCanvasForClass.PowerPoint.VstoPlugin.csproj
@@ -21,11 +21,11 @@
{BAA0C2D2-18E2-41B9-852F-F413020CAA33};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Debug
AnyCPU
- {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}
+ {8C593467-E54D-4FA7-881C-78F3CC48A867}
Library
false
- InkCanvasForClassPPTVsto
- InkCanvasForClassPPTVsto
+ InkCanvasForClass.PowerPoint.VstoPlugin
+ InkCanvasForClass.PowerPoint.VstoPlugin
3
v4.7.2
VSTO40
@@ -166,7 +166,6 @@
True
Resources.resx
-
SettingsSingleFileGenerator
Settings.Designer.cs
@@ -193,15 +192,6 @@
10.0
$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
-
- true
-
-
- InkCanvasForClassPPTVsto_TemporaryKey.pfx
-
-
- E0DCEEAE8C0D178489A9D826E0280507E45B0283
-
@@ -211,7 +201,7 @@
-
+
diff --git a/InkCanvasForClass.PowerPoint.Vsto/MainRibbon.cs b/InkCanvasForClass.PowerPoint.VstoPlugin/MainRibbon.cs
similarity index 94%
rename from InkCanvasForClass.PowerPoint.Vsto/MainRibbon.cs
rename to InkCanvasForClass.PowerPoint.VstoPlugin/MainRibbon.cs
index 0b2b630..b4ae0e8 100644
--- a/InkCanvasForClass.PowerPoint.Vsto/MainRibbon.cs
+++ b/InkCanvasForClass.PowerPoint.VstoPlugin/MainRibbon.cs
@@ -26,7 +26,7 @@ using Office = Microsoft.Office.Core;
// 有关详细信息,请参见 Visual Studio Tools for Office 帮助中的功能区 XML 文档。
-namespace InkCanvasForClassPPTVsto {
+namespace InkCanvasForClass.PowerPoint.VstoPlugin {
[ComVisible(true)]
public class MainRibbon : Office.IRibbonExtensibility {
private Office.IRibbonUI ribbon;
@@ -37,7 +37,7 @@ namespace InkCanvasForClassPPTVsto {
#region IRibbonExtensibility 成员
public string GetCustomUI(string ribbonID) {
- return GetResourceText("InkCanvasForClassPPTVsto.MainRibbon.xml");
+ return GetResourceText("InkCanvasForClass.PowerPoint.VstoPlugin.MainRibbon.xml");
}
#endregion
diff --git a/InkCanvasForClass.PowerPoint.VstoPlugin/MainRibbon.xml b/InkCanvasForClass.PowerPoint.VstoPlugin/MainRibbon.xml
new file mode 100644
index 0000000..4f38f51
--- /dev/null
+++ b/InkCanvasForClass.PowerPoint.VstoPlugin/MainRibbon.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/InkCanvasForClass.PowerPoint.Vsto/Properties/AssemblyInfo.cs b/InkCanvasForClass.PowerPoint.VstoPlugin/Properties/AssemblyInfo.cs
similarity index 85%
rename from InkCanvasForClass.PowerPoint.Vsto/Properties/AssemblyInfo.cs
rename to InkCanvasForClass.PowerPoint.VstoPlugin/Properties/AssemblyInfo.cs
index 297cda3..a38a9b0 100644
--- a/InkCanvasForClass.PowerPoint.Vsto/Properties/AssemblyInfo.cs
+++ b/InkCanvasForClass.PowerPoint.VstoPlugin/Properties/AssemblyInfo.cs
@@ -6,11 +6,11 @@ using System.Security;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
-[assembly: AssemblyTitle("InkCanvasForClassPPTVsto")]
+[assembly: AssemblyTitle("InkCanvasForClass.PowerPoint.VstoPlugin")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("InkCanvasForClassPPTVsto")]
+[assembly: AssemblyProduct("InkCanvasForClass.PowerPoint.VstoPlugin")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -21,7 +21,7 @@ using System.Security;
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
-[assembly: Guid("cfac1b17-2ab3-422a-9a48-a2d01a63f52d")]
+[assembly: Guid("d9844682-af03-445c-826b-7c1e2b7959a1")]
// 程序集的版本信息由下列四个值组成:
//
diff --git a/InkCanvasForClass.PowerPoint.Vsto/Properties/Resources.Designer.cs b/InkCanvasForClass.PowerPoint.VstoPlugin/Properties/Resources.Designer.cs
similarity index 94%
rename from InkCanvasForClass.PowerPoint.Vsto/Properties/Resources.Designer.cs
rename to InkCanvasForClass.PowerPoint.VstoPlugin/Properties/Resources.Designer.cs
index e06741d..6609438 100644
--- a/InkCanvasForClass.PowerPoint.Vsto/Properties/Resources.Designer.cs
+++ b/InkCanvasForClass.PowerPoint.VstoPlugin/Properties/Resources.Designer.cs
@@ -8,7 +8,7 @@
//
//------------------------------------------------------------------------------
-namespace InkCanvasForClassPPTVsto.Properties {
+namespace InkCanvasForClass.PowerPoint.VstoPlugin.Properties {
///
@@ -38,7 +38,7 @@ namespace InkCanvasForClassPPTVsto.Properties {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("InkCanvasForClassPPTVsto.Properties.Resources", typeof(Resources).Assembly);
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("InkCanvasForClass.PowerPoint.VstoPlugin.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
diff --git a/InkCanvasForClass.PowerPoint.Vsto/Properties/Resources.resx b/InkCanvasForClass.PowerPoint.VstoPlugin/Properties/Resources.resx
similarity index 100%
rename from InkCanvasForClass.PowerPoint.Vsto/Properties/Resources.resx
rename to InkCanvasForClass.PowerPoint.VstoPlugin/Properties/Resources.resx
diff --git a/InkCanvasForClass.PowerPoint.Vsto/Properties/Settings.Designer.cs b/InkCanvasForClass.PowerPoint.VstoPlugin/Properties/Settings.Designer.cs
similarity index 94%
rename from InkCanvasForClass.PowerPoint.Vsto/Properties/Settings.Designer.cs
rename to InkCanvasForClass.PowerPoint.VstoPlugin/Properties/Settings.Designer.cs
index 1d49dc3..6c62756 100644
--- a/InkCanvasForClass.PowerPoint.Vsto/Properties/Settings.Designer.cs
+++ b/InkCanvasForClass.PowerPoint.VstoPlugin/Properties/Settings.Designer.cs
@@ -8,7 +8,7 @@
//
//------------------------------------------------------------------------------
-namespace InkCanvasForClassPPTVsto.Properties {
+namespace InkCanvasForClass.PowerPoint.VstoPlugin.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
diff --git a/InkCanvasForClass.PowerPoint.Vsto/Properties/Settings.settings b/InkCanvasForClass.PowerPoint.VstoPlugin/Properties/Settings.settings
similarity index 100%
rename from InkCanvasForClass.PowerPoint.Vsto/Properties/Settings.settings
rename to InkCanvasForClass.PowerPoint.VstoPlugin/Properties/Settings.settings
diff --git a/InkCanvasForClass.PowerPoint.Vsto/ThisAddIn.Designer.cs b/InkCanvasForClass.PowerPoint.VstoPlugin/ThisAddIn.Designer.cs
similarity index 99%
rename from InkCanvasForClass.PowerPoint.Vsto/ThisAddIn.Designer.cs
rename to InkCanvasForClass.PowerPoint.VstoPlugin/ThisAddIn.Designer.cs
index de7c25f..2bc687f 100644
--- a/InkCanvasForClass.PowerPoint.Vsto/ThisAddIn.Designer.cs
+++ b/InkCanvasForClass.PowerPoint.VstoPlugin/ThisAddIn.Designer.cs
@@ -9,7 +9,7 @@
//------------------------------------------------------------------------------
#pragma warning disable 414
-namespace InkCanvasForClassPPTVsto {
+namespace InkCanvasForClass.PowerPoint.VstoPlugin {
///
diff --git a/InkCanvasForClass.PowerPoint.Vsto/ThisAddIn.Designer.xml b/InkCanvasForClass.PowerPoint.VstoPlugin/ThisAddIn.Designer.xml
similarity index 56%
rename from InkCanvasForClass.PowerPoint.Vsto/ThisAddIn.Designer.xml
rename to InkCanvasForClass.PowerPoint.VstoPlugin/ThisAddIn.Designer.xml
index a7ebc31..632d064 100644
--- a/InkCanvasForClass.PowerPoint.Vsto/ThisAddIn.Designer.xml
+++ b/InkCanvasForClass.PowerPoint.VstoPlugin/ThisAddIn.Designer.xml
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/InkCanvasForClass.PowerPoint.Vsto/ThisAddIn.cs b/InkCanvasForClass.PowerPoint.VstoPlugin/ThisAddIn.cs
similarity index 95%
rename from InkCanvasForClass.PowerPoint.Vsto/ThisAddIn.cs
rename to InkCanvasForClass.PowerPoint.VstoPlugin/ThisAddIn.cs
index bf29fe8..116bc73 100644
--- a/InkCanvasForClass.PowerPoint.Vsto/ThisAddIn.cs
+++ b/InkCanvasForClass.PowerPoint.VstoPlugin/ThisAddIn.cs
@@ -6,7 +6,7 @@ using System.Xml.Linq;
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using Office = Microsoft.Office.Core;
-namespace InkCanvasForClassPPTVsto
+namespace InkCanvasForClass.PowerPoint.VstoPlugin
{
public partial class ThisAddIn
{
diff --git a/InkCanvasForClass.PowerPoint.VstoPlugin/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs b/InkCanvasForClass.PowerPoint.VstoPlugin/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs
new file mode 100644
index 0000000..3871b18
--- /dev/null
+++ b/InkCanvasForClass.PowerPoint.VstoPlugin/obj/Debug/.NETFramework,Version=v4.7.2.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
diff --git a/InkCanvasForClass.PowerPoint.VstoPlugin/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/InkCanvasForClass.PowerPoint.VstoPlugin/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
new file mode 100644
index 0000000..45f4295
Binary files /dev/null and b/InkCanvasForClass.PowerPoint.VstoPlugin/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/InkCanvasForClass.PowerPoint.VstoPlugin/obj/Debug/InkCanvasForClass.PowerPoint.VstoPlugin.csproj.AssemblyReference.cache b/InkCanvasForClass.PowerPoint.VstoPlugin/obj/Debug/InkCanvasForClass.PowerPoint.VstoPlugin.csproj.AssemblyReference.cache
new file mode 100644
index 0000000..55f4260
Binary files /dev/null and b/InkCanvasForClass.PowerPoint.VstoPlugin/obj/Debug/InkCanvasForClass.PowerPoint.VstoPlugin.csproj.AssemblyReference.cache differ
diff --git a/InkCanvasForClass/App.xaml.cs b/InkCanvasForClass/App.xaml.cs
index 9989103..e6b9b55 100644
--- a/InkCanvasForClass/App.xaml.cs
+++ b/InkCanvasForClass/App.xaml.cs
@@ -21,9 +21,6 @@ using Ink_Canvas.Resources.ICCConfiguration;
namespace Ink_Canvas {
- ///
- /// Interaction logic for App.xaml
- ///
public partial class App : Application {
[DllImport("UIAccessDLL_x86.dll", EntryPoint = "PrepareUIAccess", CallingConvention = CallingConvention.Cdecl)]
@@ -58,9 +55,9 @@ namespace Ink_Canvas {
var identity = WindowsIdentity.GetCurrent();
var principal = new WindowsPrincipal(identity);
if (Environment.Is64BitProcess && principal.IsInRole(WindowsBuiltInRole.Administrator)) {
- Trace.WriteLine(PrepareUIAccessX64());
+ //Trace.WriteLine(PrepareUIAccessX64());
} else if (principal.IsInRole(WindowsBuiltInRole.Administrator)) {
- PrepareUIAccessX86();
+ //PrepareUIAccessX86();
}
RootPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
@@ -119,23 +116,10 @@ namespace Ink_Canvas {
}
mainWin = new MainWindow();
-
- if (isUsingWindowChrome && DwmCompositionHelper.DwmIsCompositionEnabled()) {
- mainWin.AllowsTransparency = false;
- WindowChrome wc = new WindowChrome();
- wc.GlassFrameThickness = new Thickness(-1);
- wc.CaptionHeight = 0;
- wc.CornerRadius = new CornerRadius(0);
- wc.ResizeBorderThickness = new Thickness(0);
- WindowChrome.SetWindowChrome(mainWin, wc);
- } else {
- mainWin.AllowsTransparency = true;
- WindowChrome.SetWindowChrome(mainWin, null);
- }
mainWin.Show();
- var setW = new SettingsWindow();
- setW.Show();
+ //var setW = new SettingsWindow();
+ //setW.Show();
_taskbar = (TaskbarIcon)FindResource("TaskbarTrayIcon");
diff --git a/InkCanvasForClass/Components/SegmentedButtons.xaml b/InkCanvasForClass/Components/SegmentedButtons.xaml
new file mode 100644
index 0000000..4552c92
--- /dev/null
+++ b/InkCanvasForClass/Components/SegmentedButtons.xaml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/InkCanvasForClass/Components/SegmentedButtons.xaml.cs b/InkCanvasForClass/Components/SegmentedButtons.xaml.cs
new file mode 100644
index 0000000..893c90c
--- /dev/null
+++ b/InkCanvasForClass/Components/SegmentedButtons.xaml.cs
@@ -0,0 +1,25 @@
+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 Ink_Canvas.Components {
+ ///
+ /// SegmentedButtons.xaml 的交互逻辑
+ ///
+ public partial class SegmentedButtons : UserControl {
+ public SegmentedButtons() {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/InkCanvasForClass/Components/ToggleSwitch.xaml b/InkCanvasForClass/Components/ToggleSwitch.xaml
new file mode 100644
index 0000000..d7001b1
--- /dev/null
+++ b/InkCanvasForClass/Components/ToggleSwitch.xaml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/InkCanvasForClass/Components/ToggleSwitch.xaml.cs b/InkCanvasForClass/Components/ToggleSwitch.xaml.cs
new file mode 100644
index 0000000..a2dfba7
--- /dev/null
+++ b/InkCanvasForClass/Components/ToggleSwitch.xaml.cs
@@ -0,0 +1,169 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+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.Animation;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using Windows.UI.Xaml;
+using RoutedEventArgs = System.Windows.RoutedEventArgs;
+using UIElement = System.Windows.UIElement;
+using Visibility = System.Windows.Visibility;
+
+namespace Ink_Canvas.Components {
+
+ ///
+ /// ToggleSwitch 用于在 WPF 中实现功能完整的切换开关控件
+ ///
+ public partial class ToggleSwitch : UserControl {
+ private bool isToggledByUser = false;
+ private bool isAnimating { get; set; } = false;
+
+ public static readonly System.Windows.RoutedEvent OnToggledEvent = EventManager.RegisterRoutedEvent(
+ name: "OnToggled",
+ routingStrategy: RoutingStrategy.Bubble,
+ handlerType: typeof(System.Windows.RoutedEventHandler),
+ ownerType: typeof(ToggleSwitch));
+
+ public event System.Windows.RoutedEventHandler OnToggled {
+ add => AddHandler(OnToggledEvent, value);
+ remove => RemoveHandler(OnToggledEvent, value);
+ }
+
+ private void RaiseOnToggledRoutedEvent() {
+ RoutedEventArgs routedEventArgs = new RoutedEventArgs(routedEvent: OnToggledEvent);
+ RaiseEvent(routedEventArgs);
+ }
+
+ public bool IsOn {
+ get => (bool)GetValue(IsOnProperty);
+ set {
+ if (IsOn == value) return;
+ SetValue(IsOnProperty, value);
+ UpdateToggleSwitchByState(!isToggledByUser);
+ RaiseOnToggledRoutedEvent();
+ }
+ }
+
+ public static readonly System.Windows.DependencyProperty IsOnProperty =
+ System.Windows.DependencyProperty.Register(
+ name: nameof(IsOn),
+ propertyType: typeof(bool),
+ ownerType: typeof(ToggleSwitch),
+ typeMetadata: new FrameworkPropertyMetadata(defaultValue: false, propertyChangedCallback: (o, args) => {
+ var toggleSwitch = o as ToggleSwitch;
+ toggleSwitch?.UpdateToggleSwitchByState(!toggleSwitch.isToggledByUser);
+ toggleSwitch?.RaiseOnToggledRoutedEvent();
+ }));
+
+ public Brush SwitchBackground {
+ get => (Brush)GetValue(SwitchBackgroundProperty);
+ set {
+ SetValue(SwitchBackgroundProperty, value);
+ UpdateToggleSwitchByState(!isToggledByUser);
+ }
+ }
+
+ public static readonly System.Windows.DependencyProperty SwitchBackgroundProperty =
+ System.Windows.DependencyProperty.Register(
+ nameof(SwitchBackground),
+ typeof(Brush),
+ typeof(ToggleSwitch),
+ new FrameworkPropertyMetadata(new SolidColorBrush(Color.FromRgb(53, 132, 228)), // 默认颜色
+ FrameworkPropertyMetadataOptions.AffectsRender,
+ propertyChangedCallback: OnSwitchBackgroundChanged));
+
+ private static void OnSwitchBackgroundChanged(System.Windows.DependencyObject d, System.Windows.DependencyPropertyChangedEventArgs e) {
+ var toggleSwitch = d as ToggleSwitch;
+ toggleSwitch?.UpdateToggleSwitchByState(true);
+ }
+
+ public new bool IsEnabled {
+ get => (bool)GetValue(IsEnabledProperty);
+ set {
+ if (IsEnabled == value) return;
+ SetValue(IsEnabledProperty, value);
+ UpdateToggleSwitchByState();
+ }
+ }
+
+ public new static readonly System.Windows.DependencyProperty IsEnabledProperty =
+ System.Windows.DependencyProperty.Register(
+ name: nameof(IsEnabled),
+ propertyType: typeof(bool),
+ ownerType: typeof(ToggleSwitch),
+ typeMetadata: new FrameworkPropertyMetadata(defaultValue: true, propertyChangedCallback: (o, args) => {
+ var toggleSwitch = o as ToggleSwitch;
+ toggleSwitch?.UpdateToggleSwitchByState(!toggleSwitch.isToggledByUser);
+ }));
+
+ public ToggleSwitch() {
+ InitializeComponent();
+ UpdateToggleSwitchByState(true);
+ BackgroundBorder.MouseUp += BackgroundBorder_MouseUp;
+ BackgroundBorder.MouseDown += BackgroundBorder_MouseDown;
+ BackgroundBorder.MouseLeave += BackgroundBorder_MouseLeave;
+ }
+
+ private bool isBackgroundBorderMouseDown = false;
+
+ private void BackgroundBorder_MouseDown(object sender, MouseButtonEventArgs e) {
+ if (isBackgroundBorderMouseDown || isAnimating) return;
+ isBackgroundBorderMouseDown = true;
+ OverlayBorder.Visibility = Visibility.Visible;
+ }
+
+ private void BackgroundBorder_MouseUp(object sender, MouseButtonEventArgs e) {
+ if (!isBackgroundBorderMouseDown || isAnimating) return;
+ BackgroundBorder_MouseLeave(sender, null);
+ isToggledByUser = true;
+ IsOn = !IsOn;
+ isToggledByUser = false;
+ }
+
+ private void BackgroundBorder_MouseLeave(object sender, MouseEventArgs e) {
+ if (!isBackgroundBorderMouseDown || isAnimating) return;
+ isBackgroundBorderMouseDown = false;
+ OverlayBorder.Visibility = Visibility.Hidden;
+ }
+
+ private void UpdateToggleSwitchByState(bool isNoAnimation = false) {
+ Opacity = IsEnabled ? 1 : 0.5;
+ IsHitTestVisible = IsEnabled;
+ IsTabStop = IsEnabled;
+ if (isNoAnimation) {
+ ThumbTranslateTransform.X = IsOn ? 23 : 0;
+ BackgroundBorder.Background =
+ IsOn ? SwitchBackground : new SolidColorBrush(Color.FromRgb(225, 225, 225));
+ } else {
+ isAnimating = true;
+ var sb = new Storyboard();
+ // 渐变动画
+ var ani = new DoubleAnimation {
+ From = IsOn?0:23,
+ To = IsOn?23:0,
+ Duration = TimeSpan.FromMilliseconds(125)
+ };
+ ani.EasingFunction = new CubicEase();
+ Storyboard.SetTargetProperty(ani, new System.Windows.PropertyPath("(UIElement.RenderTransform).(TranslateTransform.X)"));
+ sb.Children.Add(ani);
+ if (IsOn) BackgroundBorder.Background = SwitchBackground;
+ sb.Completed += (sender, args) => {
+ isAnimating = false;
+ BackgroundBorder.Background =
+ IsOn ? SwitchBackground : new SolidColorBrush(Color.FromRgb(225, 225, 225));
+ };
+ ThumbBorder.BeginStoryboard(sb);
+ }
+ }
+ }
+}
diff --git a/InkCanvasForClass/Helpers/PerformanceTransparentWin.cs b/InkCanvasForClass/Helpers/PerformanceTransparentWin.cs
index c61cf2a..6e2c51f 100644
--- a/InkCanvasForClass/Helpers/PerformanceTransparentWin.cs
+++ b/InkCanvasForClass/Helpers/PerformanceTransparentWin.cs
@@ -108,7 +108,7 @@ namespace Ink_Canvas.Helpers
ResizeMode = ResizeMode.NoResize;
WindowChrome.SetWindowChrome(this,
- new WindowChrome { GlassFrameThickness = WindowChrome.GlassFrameCompleteThickness, CaptionHeight = 0 });
+ new WindowChrome { GlassFrameThickness = WindowChrome.GlassFrameCompleteThickness, CaptionHeight = 0, CornerRadius = new CornerRadius(0), ResizeBorderThickness = new Thickness(0)});
var visualTree = new FrameworkElementFactory(typeof(Border));
visualTree.SetValue(Border.BackgroundProperty, new TemplateBindingExtension(Window.BackgroundProperty));
diff --git a/InkCanvasForClass/InkCanvasForClass.csproj b/InkCanvasForClass/InkCanvasForClass.csproj
index 21faee2..550366f 100644
--- a/InkCanvasForClass/InkCanvasForClass.csproj
+++ b/InkCanvasForClass/InkCanvasForClass.csproj
@@ -166,6 +166,7 @@
+
all
diff --git a/InkCanvasForClass/InkCanvasForClass.csproj.user b/InkCanvasForClass/InkCanvasForClass.csproj.user
index f69f544..0969655 100644
--- a/InkCanvasForClass/InkCanvasForClass.csproj.user
+++ b/InkCanvasForClass/InkCanvasForClass.csproj.user
@@ -8,6 +8,12 @@
ProjectDebugger
+
+ Code
+
+
+ Code
+
Code
@@ -32,6 +38,12 @@
Code
+
+ Code
+
+
+ Code
+
Code
@@ -40,6 +52,12 @@
+
+ Designer
+
+
+ Designer
+
Designer
@@ -73,6 +91,12 @@
Designer
+
+ Designer
+
+
+ Designer
+
Designer
diff --git a/InkCanvasForClass/MainWindow.xaml b/InkCanvasForClass/MainWindow.xaml
index 6df6bde..6dab49d 100644
--- a/InkCanvasForClass/MainWindow.xaml
+++ b/InkCanvasForClass/MainWindow.xaml
@@ -1,42 +1,42 @@
-
+
@@ -9364,4 +9364,4 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/InkCanvasForClass/MainWindow.xaml.cs b/InkCanvasForClass/MainWindow.xaml.cs
index 4339250..11df679 100644
--- a/InkCanvasForClass/MainWindow.xaml.cs
+++ b/InkCanvasForClass/MainWindow.xaml.cs
@@ -30,7 +30,7 @@ using Button = System.Windows.Controls.Button;
using TextBox = System.Windows.Controls.TextBox;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
{
@@ -108,7 +108,7 @@ namespace Ink_Canvas {
timeMachine.OnUndoStateChanged += TimeMachine_OnUndoStateChanged;
inkCanvas.Strokes.StrokesChanged += StrokesOnStrokesChanged;
- Microsoft.Win32.SystemEvents.UserPreferenceChanged += SystemEvents_UserPreferenceChanged;
+ //Microsoft.Win32.SystemEvents.UserPreferenceChanged += SystemEvents_UserPreferenceChanged;
try {
if (File.Exists("SpecialVersion.ini")) SpecialVersionResetToSuggestion_Click();
}
@@ -212,8 +212,6 @@ namespace Ink_Canvas {
analyzer.Analyze();
}
- public FloatingToolBarV2 FloatingToolBarV2;
-
private async void Window_Loaded(object sender, RoutedEventArgs e) {
loadPenCanvas();
//加载设置
@@ -222,7 +220,7 @@ namespace Ink_Canvas {
if (Environment.Is64BitProcess) SettingsInkRecognitionGroupBox.Visibility = Visibility.Collapsed;
ThemeManager.Current.ApplicationTheme = ApplicationTheme.Light;
- SystemEvents_UserPreferenceChanged(null, null);
+ //SystemEvents_UserPreferenceChanged(null, null);
//TextBlockVersion.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();
LogHelper.WriteLogToFile("Ink Canvas Loaded", LogHelper.LogType.Event);
@@ -231,10 +229,7 @@ namespace Ink_Canvas {
isLoaded = true;
- FloatingToolBarV2 = new FloatingToolBarV2();
- FloatingToolBarV2.Topmost = false;
- FloatingToolBarV2.Show();
- FloatingToolBarV2.Owner = this;
+ InitFloatingToolbarV2();
BlackBoardLeftSidePageListView.ItemsSource = blackBoardSidePageListViewObservableCollection;
BlackBoardRightSidePageListView.ItemsSource = blackBoardSidePageListViewObservableCollection;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_AutoFold.cs b/InkCanvasForClass/MainWindow_cs/MW_AutoFold.cs
index 6ebb22f..221b604 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_AutoFold.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_AutoFold.cs
@@ -13,7 +13,7 @@ using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
public bool isFloatingBarFolded = false;
private bool isFloatingBarChangingHideMode = false;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_AutoStart.cs b/InkCanvasForClass/MainWindow_cs/MW_AutoStart.cs
index b7887e5..f5bbdac 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_AutoStart.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_AutoStart.cs
@@ -1,9 +1,10 @@
-using IWshRuntimeLibrary;
+using Ink_Canvas.Helpers;
+using IWshRuntimeLibrary;
using System;
using System.Windows;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
public static bool StartAutomaticallyCreate(string exeName) {
try {
var shell = new WshShell();
diff --git a/InkCanvasForClass/MainWindow_cs/MW_AutoTheme.cs b/InkCanvasForClass/MainWindow_cs/MW_AutoTheme.cs
index 7f0d715..a86d12a 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_AutoTheme.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_AutoTheme.cs
@@ -3,10 +3,11 @@ using iNKORE.UI.WPF.Modern;
using System;
using System.Windows;
using System.Windows.Media;
+using Ink_Canvas.Helpers;
using Application = System.Windows.Application;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ /*public partial class MainWindow : PerformanceTransparentWin {
private Color FloatBarForegroundColor = Color.FromRgb(102, 102, 102);
private void SetTheme(string theme) {
@@ -82,5 +83,5 @@ namespace Ink_Canvas {
return light;
}
- }
+ }*/
}
\ No newline at end of file
diff --git a/InkCanvasForClass/MainWindow_cs/MW_BoardControls.cs b/InkCanvasForClass/MainWindow_cs/MW_BoardControls.cs
index ebfebf3..5894b05 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_BoardControls.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_BoardControls.cs
@@ -15,7 +15,7 @@ using System.Xml.Linq;
using System.Windows.Controls;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
private StrokeCollection[] strokeCollections = new StrokeCollection[101];
private bool[] whiteboadLastModeIsRedo = new bool[101];
private StrokeCollection lastTouchDownStrokeCollection = new StrokeCollection();
diff --git a/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs b/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs
index 985ea0e..0b03899 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs
@@ -7,7 +7,7 @@ using System.Windows.Input;
using System.Windows.Media;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
private Border lastBoardToolBtnDownBorder = null;
private Border lastBoardSideBtnDownBorder = null;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_Colors.cs b/InkCanvasForClass/MainWindow_cs/MW_Colors.cs
index 920a6b8..0ec7481 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_Colors.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_Colors.cs
@@ -15,7 +15,7 @@ using System.Windows.Media.Animation;
using Ink_Canvas.Popups;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
private int inkColor = 1;
private void ColorSwitchCheck() {
diff --git a/InkCanvasForClass/MainWindow_cs/MW_Eraser.cs b/InkCanvasForClass/MainWindow_cs/MW_Eraser.cs
index 2dd5e61..624ba4c 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_Eraser.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_Eraser.cs
@@ -9,9 +9,10 @@ using System.Windows.Controls;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
+using Ink_Canvas.Helpers;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
public bool isUsingGeometryEraser = false;
private IncrementalStrokeHitTester hitTester = null;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs b/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs
index e63de26..fbd81e1 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs
@@ -28,7 +28,7 @@ using Ink_Canvas.Popups;
using Image = System.Windows.Controls.Image;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
#region “手勢”按鈕
///
@@ -787,22 +787,14 @@ namespace Ink_Canvas {
}
else
{
- if (Settings.PowerPointSettings.IsShowStrokeOnSelectInPowerPoint)
+ if (Settings.Canvas.HideStrokeWhenSelecting)
{
- inkCanvas.Visibility = Visibility.Visible;
- inkCanvas.IsHitTestVisible = true;
+ inkCanvas.Visibility = Visibility.Collapsed;
}
else
{
- if (Settings.Canvas.HideStrokeWhenSelecting)
- {
- inkCanvas.Visibility = Visibility.Collapsed;
- }
- else
- {
- inkCanvas.IsHitTestVisible = false;
- inkCanvas.Visibility = Visibility.Visible;
- }
+ inkCanvas.IsHitTestVisible = false;
+ inkCanvas.Visibility = Visibility.Visible;
}
}
@@ -1293,208 +1285,6 @@ namespace Ink_Canvas {
new RandWindow(Settings,true).ShowDialog();
}
- private void GridInkReplayButton_MouseUp(object sender, MouseButtonEventArgs e) {
- if (lastBorderMouseDownObject != sender) return;
- if (inkCanvas.Strokes.Count == 0) {
- HideSubPanels();
- return;
- };
-
- AnimationsHelper.HideWithSlideAndFade(BorderTools);
- AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
-
- CollapseBorderDrawShape();
-
- InkCanvasForInkReplay.Visibility = Visibility.Visible;
- InkCanvasGridForInkReplay.Visibility = Visibility.Hidden;
- InkCanvasGridForInkReplay.IsHitTestVisible = false;
- FloatingbarUIForInkReplay.Visibility = Visibility.Hidden;
- FloatingbarUIForInkReplay.IsHitTestVisible = false;
- BlackboardUIGridForInkReplay.Visibility = Visibility.Hidden;
- BlackboardUIGridForInkReplay.IsHitTestVisible = false;
-
- AnimationsHelper.ShowWithFadeIn(BorderInkReplayToolBox);
- InkReplayPanelStatusText.Text = "正在重播墨迹...";
- InkReplayPlayPauseBorder.Background = new SolidColorBrush(Colors.Transparent);
- InkReplayPlayButtonImage.Visibility = Visibility.Collapsed;
- InkReplayPauseButtonImage.Visibility = Visibility.Visible;
-
- isStopInkReplay = false;
- isPauseInkReplay = false;
- isRestartInkReplay = false;
- inkReplaySpeed = 1;
- InkCanvasForInkReplay.Strokes.Clear();
- var strokes = inkCanvas.Strokes.Clone();
- if (inkCanvas.GetSelectedStrokes().Count != 0) strokes = inkCanvas.GetSelectedStrokes().Clone();
- int k = 1, i = 0;
- new Thread(() => {
- isRestartInkReplay = true;
- while (isRestartInkReplay) {
- isRestartInkReplay = false;
- Application.Current.Dispatcher.Invoke(() => {
- InkCanvasForInkReplay.Strokes.Clear();
- });
- foreach (var stroke in strokes) {
-
- if (isRestartInkReplay) break;
-
- var stylusPoints = new StylusPointCollection();
- if (stroke.StylusPoints.Count == 629) //圆或椭圆
- {
- Stroke s = null;
- foreach (var stylusPoint in stroke.StylusPoints) {
-
- if (isRestartInkReplay) break;
-
- while (isPauseInkReplay) {
- Thread.Sleep(10);
- }
-
- if (i++ >= 50) {
- i = 0;
- Thread.Sleep((int)(10 / inkReplaySpeed));
- if (isStopInkReplay) return;
- }
-
- Application.Current.Dispatcher.Invoke(() => {
- try {
- InkCanvasForInkReplay.Strokes.Remove(s);
- }
- catch { }
-
- stylusPoints.Add(stylusPoint);
- s = new Stroke(stylusPoints.Clone());
- s.DrawingAttributes = stroke.DrawingAttributes;
- InkCanvasForInkReplay.Strokes.Add(s);
- });
- }
- } else {
- Stroke s = null;
- foreach (var stylusPoint in stroke.StylusPoints) {
-
- if (isRestartInkReplay) break;
-
- while (isPauseInkReplay) {
- Thread.Sleep(10);
- }
-
- if (i++ >= k) {
- i = 0;
- Thread.Sleep((int)(10 / inkReplaySpeed));
- if (isStopInkReplay) return;
- }
-
- Application.Current.Dispatcher.Invoke(() => {
- try {
- InkCanvasForInkReplay.Strokes.Remove(s);
- }
- catch { }
-
- stylusPoints.Add(stylusPoint);
- s = new Stroke(stylusPoints.Clone());
- s.DrawingAttributes = stroke.DrawingAttributes;
- InkCanvasForInkReplay.Strokes.Add(s);
- });
- }
- }
- }
- }
-
- Thread.Sleep(100);
- Application.Current.Dispatcher.Invoke(() => {
- InkCanvasForInkReplay.Visibility = Visibility.Collapsed;
- InkCanvasGridForInkReplay.Visibility = Visibility.Visible;
- InkCanvasGridForInkReplay.IsHitTestVisible = true;
- AnimationsHelper.HideWithFadeOut(BorderInkReplayToolBox);
- FloatingbarUIForInkReplay.Visibility = Visibility.Visible;
- FloatingbarUIForInkReplay.IsHitTestVisible = true;
- BlackboardUIGridForInkReplay.Visibility = Visibility.Visible;
- BlackboardUIGridForInkReplay.IsHitTestVisible = true;
- });
- }).Start();
- }
-
- private bool isStopInkReplay = false;
- private bool isPauseInkReplay = false;
- private bool isRestartInkReplay = false;
- private double inkReplaySpeed = 1;
-
- private void InkCanvasForInkReplay_MouseDown(object sender, MouseButtonEventArgs e) {
- if (e.ClickCount == 2) {
- InkCanvasForInkReplay.Visibility = Visibility.Collapsed;
- InkCanvasGridForInkReplay.Visibility = Visibility.Visible;
- InkCanvasGridForInkReplay.IsHitTestVisible = true;
- FloatingbarUIForInkReplay.Visibility = Visibility.Visible;
- FloatingbarUIForInkReplay.IsHitTestVisible = true;
- BlackboardUIGridForInkReplay.Visibility = Visibility.Visible;
- BlackboardUIGridForInkReplay.IsHitTestVisible = true;
- AnimationsHelper.HideWithFadeOut(BorderInkReplayToolBox);
- isStopInkReplay = true;
- }
- }
-
- private void InkReplayPlayPauseBorder_OnMouseDown(object sender, MouseButtonEventArgs e) {
- InkReplayPlayPauseBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11));
- }
-
- private void InkReplayPlayPauseBorder_OnMouseUp(object sender, MouseButtonEventArgs e)
- {
- InkReplayPlayPauseBorder.Background = new SolidColorBrush(Colors.Transparent);
- isPauseInkReplay = !isPauseInkReplay;
- InkReplayPanelStatusText.Text = isPauseInkReplay?"已暂停!":"正在重播墨迹...";
- InkReplayPlayButtonImage.Visibility = isPauseInkReplay ? Visibility.Visible: Visibility.Collapsed;
- InkReplayPauseButtonImage.Visibility = !isPauseInkReplay ? Visibility.Visible : Visibility.Collapsed;
- }
-
- private void InkReplayStopButtonBorder_OnMouseDown(object sender, MouseButtonEventArgs e)
- {
- InkReplayStopButtonBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11));
- }
-
- private void InkReplayStopButtonBorder_OnMouseUp(object sender, MouseButtonEventArgs e)
- {
- InkReplayStopButtonBorder.Background = new SolidColorBrush(Colors.Transparent);
- InkCanvasForInkReplay.Visibility = Visibility.Collapsed;
- InkCanvasGridForInkReplay.Visibility = Visibility.Visible;
- InkCanvasGridForInkReplay.IsHitTestVisible = true;
- FloatingbarUIForInkReplay.Visibility = Visibility.Visible;
- FloatingbarUIForInkReplay.IsHitTestVisible = true;
- BlackboardUIGridForInkReplay.Visibility = Visibility.Visible;
- BlackboardUIGridForInkReplay.IsHitTestVisible = true;
- AnimationsHelper.HideWithFadeOut(BorderInkReplayToolBox);
- isStopInkReplay = true;
- }
-
- private void InkReplayReplayButtonBorder_OnMouseDown(object sender, MouseButtonEventArgs e)
- {
- InkReplayReplayButtonBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11));
- }
-
- private void InkReplayReplayButtonBorder_OnMouseUp(object sender, MouseButtonEventArgs e)
- {
- InkReplayReplayButtonBorder.Background = new SolidColorBrush(Colors.Transparent);
- isRestartInkReplay = true;
- isPauseInkReplay = false;
- InkReplayPanelStatusText.Text = "正在重播墨迹...";
- InkReplayPlayButtonImage.Visibility = Visibility.Collapsed;
- InkReplayPauseButtonImage.Visibility = Visibility.Visible;
- }
-
- private void InkReplaySpeedButtonBorder_OnMouseDown(object sender, MouseButtonEventArgs e)
- {
- InkReplaySpeedButtonBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11));
- }
-
- private void InkReplaySpeedButtonBorder_OnMouseUp(object sender, MouseButtonEventArgs e)
- {
- InkReplaySpeedButtonBorder.Background = new SolidColorBrush(Colors.Transparent);
- inkReplaySpeed = inkReplaySpeed == 0.5 ? 1 :
- inkReplaySpeed == 1 ? 2 :
- inkReplaySpeed == 2 ? 4 :
- inkReplaySpeed == 4 ? 8 : 0.5;
- InkReplaySpeedTextBlock.Text = inkReplaySpeed + "x";
- }
-
private void SymbolIconTools_MouseUp(object sender, MouseButtonEventArgs e) {
if (lastBorderMouseDownObject != null && lastBorderMouseDownObject is Panel)
@@ -1747,7 +1537,7 @@ namespace Ink_Canvas {
HideSubPanels();
}
- #region Left Side Panel
+ #region Left Side Panel(ic屎山代码)
private void BtnFingerDragMode_Click(object sender, RoutedEventArgs e) {
isSingleFingerDragMode = !isSingleFingerDragMode;
@@ -1790,7 +1580,7 @@ namespace Ink_Canvas {
#endregion Left Side Panel
- #region Right Side Panel
+ #region Right Side Panel(ic屎山代码)
public static bool CloseIsFromButton = false;
@@ -1989,14 +1779,17 @@ namespace Ink_Canvas {
}
- if (Settings.PowerPointSettings.IsShowStrokeOnSelectInPowerPoint) {
+ /*if (Settings.PowerPointSettings.IsShowStrokeOnSelectInPowerPoint) {
inkCanvas.Visibility = Visibility.Visible;
inkCanvas.IsHitTestVisible = true;
}
else {
inkCanvas.IsHitTestVisible = true;
inkCanvas.Visibility = Visibility.Visible;
- }
+ }*/
+
+ inkCanvas.IsHitTestVisible = true;
+ inkCanvas.Visibility = Visibility.Visible;
}
GridTransparencyFakeBackground.Opacity = 0;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_Freeze.cs b/InkCanvasForClass/MainWindow_cs/MW_Freeze.cs
index 2fa5c0a..d5d8025 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_Freeze.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_Freeze.cs
@@ -7,10 +7,11 @@ using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
+using Ink_Canvas.Helpers;
using Vanara.PInvoke;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
public IntPtr MagnificationWinHandle;
public IntPtr MagnificationHostWindowHandle;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_Hotkeys.cs b/InkCanvasForClass/MainWindow_cs/MW_Hotkeys.cs
index d7eb313..3cdfa11 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_Hotkeys.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_Hotkeys.cs
@@ -2,10 +2,11 @@
using System.Diagnostics;
using System.Windows;
using System.Windows.Input;
+using Ink_Canvas.Helpers;
using static Ink_Canvas.Popups.ColorPalette;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
private void Window_MouseWheel(object sender, MouseWheelEventArgs e) {
if (BorderFloatingBarExitPPTBtn.Visibility != Visibility.Visible || currentMode != 0) return;
if (e.Delta >= 120)
diff --git a/InkCanvasForClass/MainWindow_cs/MW_InkReplay.cs b/InkCanvasForClass/MainWindow_cs/MW_InkReplay.cs
new file mode 100644
index 0000000..9c7b556
--- /dev/null
+++ b/InkCanvasForClass/MainWindow_cs/MW_InkReplay.cs
@@ -0,0 +1,223 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Media;
+using Ink_Canvas.Helpers;
+
+namespace Ink_Canvas {
+ public partial class MainWindow : PerformanceTransparentWin {
+
+ private void GridInkReplayButton_MouseUp(object sender, MouseButtonEventArgs e) {
+ if (lastBorderMouseDownObject != sender) return;
+ if (inkCanvas.Strokes.Count == 0) {
+ HideSubPanels();
+ return;
+ };
+
+ AnimationsHelper.HideWithSlideAndFade(BorderTools);
+ AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
+
+ CollapseBorderDrawShape();
+
+ InkCanvasForInkReplay.Visibility = Visibility.Visible;
+ InkCanvasGridForInkReplay.Visibility = Visibility.Hidden;
+ InkCanvasGridForInkReplay.IsHitTestVisible = false;
+ FloatingbarUIForInkReplay.Visibility = Visibility.Hidden;
+ FloatingbarUIForInkReplay.IsHitTestVisible = false;
+ BlackboardUIGridForInkReplay.Visibility = Visibility.Hidden;
+ BlackboardUIGridForInkReplay.IsHitTestVisible = false;
+
+ AnimationsHelper.ShowWithFadeIn(BorderInkReplayToolBox);
+ InkReplayPanelStatusText.Text = "正在重播墨迹...";
+ InkReplayPlayPauseBorder.Background = new SolidColorBrush(Colors.Transparent);
+ InkReplayPlayButtonImage.Visibility = Visibility.Collapsed;
+ InkReplayPauseButtonImage.Visibility = Visibility.Visible;
+
+ isStopInkReplay = false;
+ isPauseInkReplay = false;
+ isRestartInkReplay = false;
+ inkReplaySpeed = 1;
+ InkCanvasForInkReplay.Strokes.Clear();
+ var strokes = inkCanvas.Strokes.Clone();
+ if (inkCanvas.GetSelectedStrokes().Count != 0) strokes = inkCanvas.GetSelectedStrokes().Clone();
+ int k = 1, i = 0;
+ new Thread(() => {
+ isRestartInkReplay = true;
+ while (isRestartInkReplay) {
+ isRestartInkReplay = false;
+ Application.Current.Dispatcher.Invoke(() => {
+ InkCanvasForInkReplay.Strokes.Clear();
+ });
+ foreach (var stroke in strokes) {
+
+ if (isRestartInkReplay) break;
+
+ var stylusPoints = new StylusPointCollection();
+ if (stroke.StylusPoints.Count == 629) //圆或椭圆
+ {
+ Stroke s = null;
+ foreach (var stylusPoint in stroke.StylusPoints) {
+
+ if (isRestartInkReplay) break;
+
+ while (isPauseInkReplay) {
+ Thread.Sleep(10);
+ }
+
+ if (i++ >= 50) {
+ i = 0;
+ Thread.Sleep((int)(10 / inkReplaySpeed));
+ if (isStopInkReplay) return;
+ }
+
+ Application.Current.Dispatcher.Invoke(() => {
+ try {
+ InkCanvasForInkReplay.Strokes.Remove(s);
+ }
+ catch { }
+
+ stylusPoints.Add(stylusPoint);
+ s = new Stroke(stylusPoints.Clone());
+ s.DrawingAttributes = stroke.DrawingAttributes;
+ InkCanvasForInkReplay.Strokes.Add(s);
+ });
+ }
+ } else {
+ Stroke s = null;
+ foreach (var stylusPoint in stroke.StylusPoints) {
+
+ if (isRestartInkReplay) break;
+
+ while (isPauseInkReplay) {
+ Thread.Sleep(10);
+ }
+
+ if (i++ >= k) {
+ i = 0;
+ Thread.Sleep((int)(10 / inkReplaySpeed));
+ if (isStopInkReplay) return;
+ }
+
+ Application.Current.Dispatcher.Invoke(() => {
+ try {
+ InkCanvasForInkReplay.Strokes.Remove(s);
+ }
+ catch { }
+
+ stylusPoints.Add(stylusPoint);
+ s = new Stroke(stylusPoints.Clone());
+ s.DrawingAttributes = stroke.DrawingAttributes;
+ InkCanvasForInkReplay.Strokes.Add(s);
+ });
+ }
+ }
+ }
+ }
+
+ Thread.Sleep(100);
+ Application.Current.Dispatcher.Invoke(() => {
+ InkCanvasForInkReplay.Visibility = Visibility.Collapsed;
+ InkCanvasGridForInkReplay.Visibility = Visibility.Visible;
+ InkCanvasGridForInkReplay.IsHitTestVisible = true;
+ AnimationsHelper.HideWithFadeOut(BorderInkReplayToolBox);
+ FloatingbarUIForInkReplay.Visibility = Visibility.Visible;
+ FloatingbarUIForInkReplay.IsHitTestVisible = true;
+ BlackboardUIGridForInkReplay.Visibility = Visibility.Visible;
+ BlackboardUIGridForInkReplay.IsHitTestVisible = true;
+ });
+ }).Start();
+ }
+
+ #region 墨迹回放(旧版,等待重构)
+
+ private bool isStopInkReplay = false;
+ private bool isPauseInkReplay = false;
+ private bool isRestartInkReplay = false;
+ private double inkReplaySpeed = 1;
+
+ private void InkCanvasForInkReplay_MouseDown(object sender, MouseButtonEventArgs e) {
+ if (e.ClickCount == 2) {
+ InkCanvasForInkReplay.Visibility = Visibility.Collapsed;
+ InkCanvasGridForInkReplay.Visibility = Visibility.Visible;
+ InkCanvasGridForInkReplay.IsHitTestVisible = true;
+ FloatingbarUIForInkReplay.Visibility = Visibility.Visible;
+ FloatingbarUIForInkReplay.IsHitTestVisible = true;
+ BlackboardUIGridForInkReplay.Visibility = Visibility.Visible;
+ BlackboardUIGridForInkReplay.IsHitTestVisible = true;
+ AnimationsHelper.HideWithFadeOut(BorderInkReplayToolBox);
+ isStopInkReplay = true;
+ }
+ }
+
+ private void InkReplayPlayPauseBorder_OnMouseDown(object sender, MouseButtonEventArgs e) {
+ InkReplayPlayPauseBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11));
+ }
+
+ private void InkReplayPlayPauseBorder_OnMouseUp(object sender, MouseButtonEventArgs e)
+ {
+ InkReplayPlayPauseBorder.Background = new SolidColorBrush(Colors.Transparent);
+ isPauseInkReplay = !isPauseInkReplay;
+ InkReplayPanelStatusText.Text = isPauseInkReplay?"已暂停!":"正在重播墨迹...";
+ InkReplayPlayButtonImage.Visibility = isPauseInkReplay ? Visibility.Visible: Visibility.Collapsed;
+ InkReplayPauseButtonImage.Visibility = !isPauseInkReplay ? Visibility.Visible : Visibility.Collapsed;
+ }
+
+ private void InkReplayStopButtonBorder_OnMouseDown(object sender, MouseButtonEventArgs e)
+ {
+ InkReplayStopButtonBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11));
+ }
+
+ private void InkReplayStopButtonBorder_OnMouseUp(object sender, MouseButtonEventArgs e)
+ {
+ InkReplayStopButtonBorder.Background = new SolidColorBrush(Colors.Transparent);
+ InkCanvasForInkReplay.Visibility = Visibility.Collapsed;
+ InkCanvasGridForInkReplay.Visibility = Visibility.Visible;
+ InkCanvasGridForInkReplay.IsHitTestVisible = true;
+ FloatingbarUIForInkReplay.Visibility = Visibility.Visible;
+ FloatingbarUIForInkReplay.IsHitTestVisible = true;
+ BlackboardUIGridForInkReplay.Visibility = Visibility.Visible;
+ BlackboardUIGridForInkReplay.IsHitTestVisible = true;
+ AnimationsHelper.HideWithFadeOut(BorderInkReplayToolBox);
+ isStopInkReplay = true;
+ }
+
+ private void InkReplayReplayButtonBorder_OnMouseDown(object sender, MouseButtonEventArgs e)
+ {
+ InkReplayReplayButtonBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11));
+ }
+
+ private void InkReplayReplayButtonBorder_OnMouseUp(object sender, MouseButtonEventArgs e)
+ {
+ InkReplayReplayButtonBorder.Background = new SolidColorBrush(Colors.Transparent);
+ isRestartInkReplay = true;
+ isPauseInkReplay = false;
+ InkReplayPanelStatusText.Text = "正在重播墨迹...";
+ InkReplayPlayButtonImage.Visibility = Visibility.Collapsed;
+ InkReplayPauseButtonImage.Visibility = Visibility.Visible;
+ }
+
+ private void InkReplaySpeedButtonBorder_OnMouseDown(object sender, MouseButtonEventArgs e)
+ {
+ InkReplaySpeedButtonBorder.Background = new SolidColorBrush(Color.FromArgb(34, 9, 9, 11));
+ }
+
+ private void InkReplaySpeedButtonBorder_OnMouseUp(object sender, MouseButtonEventArgs e)
+ {
+ InkReplaySpeedButtonBorder.Background = new SolidColorBrush(Colors.Transparent);
+ inkReplaySpeed = inkReplaySpeed == 0.5 ? 1 :
+ inkReplaySpeed == 1 ? 2 :
+ inkReplaySpeed == 2 ? 4 :
+ inkReplaySpeed == 4 ? 8 : 0.5;
+ InkReplaySpeedTextBlock.Text = inkReplaySpeed + "x";
+ }
+
+ #endregion
+
+ }
+}
diff --git a/InkCanvasForClass/MainWindow_cs/MW_MouseGesture.cs b/InkCanvasForClass/MainWindow_cs/MW_MouseGesture.cs
index 95ef31d..8948025 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_MouseGesture.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_MouseGesture.cs
@@ -1,4 +1,5 @@
-using System;
+using Ink_Canvas.Helpers;
+using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
@@ -13,7 +14,7 @@ using System.Windows.Resources;
namespace Ink_Canvas
{
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
private bool isMouseGesturing = false;
private Point startPoint;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_Notification.cs b/InkCanvasForClass/MainWindow_cs/MW_Notification.cs
index e19cd98..10f092f 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_Notification.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_Notification.cs
@@ -5,7 +5,7 @@ using System.Windows;
namespace Ink_Canvas
{
- public partial class MainWindow : Window
+ public partial class MainWindow : PerformanceTransparentWin
{
int lastNotificationShowTime = 0;
int notificationShowTime = 2500;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_PPT.cs b/InkCanvasForClass/MainWindow_cs/MW_PPT.cs
index ad93494..62066dd 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_PPT.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_PPT.cs
@@ -19,7 +19,7 @@ using iNKORE.UI.WPF.Modern;
using Microsoft.Office.Core;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
public static Microsoft.Office.Interop.PowerPoint.Application pptApplication = null;
public static Presentation presentation = null;
public static Slides slides = null;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_PageListView.cs b/InkCanvasForClass/MainWindow_cs/MW_PageListView.cs
index 81acfb6..9ec9785 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_PageListView.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_PageListView.cs
@@ -16,7 +16,7 @@ using Ink_Canvas.Helpers;
namespace Ink_Canvas
{
- public partial class MainWindow : Window
+ public partial class MainWindow : PerformanceTransparentWin
{
private class PageListViewItem
{
diff --git a/InkCanvasForClass/MainWindow_cs/MW_Save&OpenStrokes.cs b/InkCanvasForClass/MainWindow_cs/MW_Save&OpenStrokes.cs
index 558a636..33a7622 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_Save&OpenStrokes.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_Save&OpenStrokes.cs
@@ -8,7 +8,7 @@ using System.Windows.Input;
using File = System.IO.File;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
private void SymbolIconSaveStrokes_MouseUp(object sender, MouseButtonEventArgs e) {
if (lastBorderMouseDownObject != sender || inkCanvas.Visibility != Visibility.Visible) return;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_Screenshot.cs b/InkCanvasForClass/MainWindow_cs/MW_Screenshot.cs
index 8af626e..2356419 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_Screenshot.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_Screenshot.cs
@@ -22,9 +22,10 @@ using System.Reflection;
using System.Windows.Shapes;
using Path = System.IO.Path;
using Rectangle = System.Drawing.Rectangle;
+using Ink_Canvas.Helpers;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
#region MagnificationAPI 获取屏幕截图并过滤ICC窗口
#region Dubi906w 的轮子
diff --git a/InkCanvasForClass/MainWindow_cs/MW_SelectionGestures.cs b/InkCanvasForClass/MainWindow_cs/MW_SelectionGestures.cs
index 57b2b0c..45a6113 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_SelectionGestures.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_SelectionGestures.cs
@@ -20,9 +20,10 @@ using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
using Application = System.Windows.Application;
using Matrix = System.Windows.Media.Matrix;
using Point = System.Windows.Point;
+using Ink_Canvas.Helpers;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
#region Floating Control
private object lastBorderMouseDownObject;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_Settings.cs b/InkCanvasForClass/MainWindow_cs/MW_Settings.cs
index 8cc00c8..f4958bf 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_Settings.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_Settings.cs
@@ -31,7 +31,7 @@ using Application = System.Windows.Application;
using Point = System.Windows.Point;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
#region Behavior
private void ToggleSwitchIsAutoUpdate_Toggled(object sender, RoutedEventArgs e) {
@@ -1650,7 +1650,7 @@ namespace Ink_Canvas {
Settings.PowerPointSettings.PowerPointSupport = true;
Settings.PowerPointSettings.IsShowCanvasAtNewSlideShow = false;
Settings.PowerPointSettings.IsNoClearStrokeOnSelectWhenInPowerPoint = true;
- Settings.PowerPointSettings.IsShowStrokeOnSelectInPowerPoint = false;
+ //Settings.PowerPointSettings.IsShowStrokeOnSelectInPowerPoint = false;
Settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint = true;
Settings.PowerPointSettings.IsAutoSaveScreenShotInPowerPoint = true;
Settings.PowerPointSettings.IsNotifyPreviousPage = false;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_SettingsToLoad.cs b/InkCanvasForClass/MainWindow_cs/MW_SettingsToLoad.cs
index 3ecd6ec..fc168e2 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_SettingsToLoad.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_SettingsToLoad.cs
@@ -22,7 +22,7 @@ using File = System.IO.File;
using OperatingSystem = OSVersionExtension.OperatingSystem;
namespace Ink_Canvas {
- public partial class MainWindow : System.Windows.Window {
+ public partial class MainWindow : PerformanceTransparentWin {
private void DisplayWelcomePopup() {
if( TaskDialog.OSSupportsTaskDialogs ) {
@@ -360,7 +360,7 @@ namespace Ink_Canvas {
FloatingBarTextVisibilityBindingLikeAPieceOfShit.Visibility = Settings.Appearance.FloatingBarButtonLabelVisibility ? Visibility.Visible : Visibility.Collapsed;
- SystemEvents_UserPreferenceChanged(null, null);
+ //SystemEvents_UserPreferenceChanged(null, null);
} else {
Settings.Appearance = new Appearance();
}
diff --git a/InkCanvasForClass/MainWindow_cs/MW_ShapeDrawing.cs b/InkCanvasForClass/MainWindow_cs/MW_ShapeDrawing.cs
index c357ac7..2926725 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_ShapeDrawing.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_ShapeDrawing.cs
@@ -13,7 +13,7 @@ using MessageBox = System.Windows.MessageBox;
using Point = System.Windows.Point;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
#region Floating Bar Control
private void ImageDrawShape_MouseUp(object sender, MouseButtonEventArgs e) {
diff --git a/InkCanvasForClass/MainWindow_cs/MW_ShapeDrawingCore.cs b/InkCanvasForClass/MainWindow_cs/MW_ShapeDrawingCore.cs
index cc80ae0..50a707e 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_ShapeDrawingCore.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_ShapeDrawingCore.cs
@@ -1,4 +1,5 @@
-using System;
+using Ink_Canvas.Helpers;
+using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Ink;
@@ -7,7 +8,7 @@ using System.Windows.Media;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
public StrokeCollection DrawShapeCore(PointCollection pts, ShapeDrawingType type, bool doNotDisturbutePoints, bool isPreview) {
// 线
diff --git a/InkCanvasForClass/MainWindow_cs/MW_SimulatePressure&InkToShape.cs b/InkCanvasForClass/MainWindow_cs/MW_SimulatePressure&InkToShape.cs
index 09d0add..d52511b 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_SimulatePressure&InkToShape.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_SimulatePressure&InkToShape.cs
@@ -14,7 +14,7 @@ using System.Windows.Threading;
using Point = System.Windows.Point;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
private StrokeCollection newStrokes = new StrokeCollection();
private List circles = new List();
diff --git a/InkCanvasForClass/MainWindow_cs/MW_Storage.cs b/InkCanvasForClass/MainWindow_cs/MW_Storage.cs
index 442b51a..671c895 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_Storage.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_Storage.cs
@@ -17,7 +17,7 @@ using Ink_Canvas.Helpers;
using JetBrains.Annotations;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
public class StorageLocationItem {
public string Path { get; set; }
diff --git a/InkCanvasForClass/MainWindow_cs/MW_TimeMachine.cs b/InkCanvasForClass/MainWindow_cs/MW_TimeMachine.cs
index 86d51a9..2cbca5f 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_TimeMachine.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_TimeMachine.cs
@@ -10,7 +10,7 @@ using System.Diagnostics;
using System.Windows.Media.Imaging;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
private enum CommitReason {
UserInput,
CodeInput,
diff --git a/InkCanvasForClass/MainWindow_cs/MW_Timer.cs b/InkCanvasForClass/MainWindow_cs/MW_Timer.cs
index 8bf1e67..1245115 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_Timer.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_Timer.cs
@@ -39,7 +39,7 @@ namespace Ink_Canvas {
}
}
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
private Timer timerCheckPPT = new Timer();
private Timer timerKillProcess = new Timer();
private Timer timerCheckAutoFold = new Timer();
diff --git a/InkCanvasForClass/MainWindow_cs/MW_TouchEvents.cs b/InkCanvasForClass/MainWindow_cs/MW_TouchEvents.cs
index 7362761..ea4673c 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_TouchEvents.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_TouchEvents.cs
@@ -12,7 +12,7 @@ using System.Windows.Media;
using Point = System.Windows.Point;
namespace Ink_Canvas {
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
#region Multi-Touch
private bool isInMultiTouchMode = false;
diff --git a/InkCanvasForClass/MainWindow_cs/MW_V2_FloatingBar.cs b/InkCanvasForClass/MainWindow_cs/MW_V2_FloatingBar.cs
new file mode 100644
index 0000000..691f9ae
--- /dev/null
+++ b/InkCanvasForClass/MainWindow_cs/MW_V2_FloatingBar.cs
@@ -0,0 +1,137 @@
+using Ink_Canvas.Helpers;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Ink;
+using System.Windows.Media;
+
+namespace Ink_Canvas {
+ public partial class MainWindow : PerformanceTransparentWin {
+
+ public FloatingToolBarV2 FloatingToolBarV2;
+
+ private void InitFloatingToolbarV2() {
+ FloatingToolBarV2 = new FloatingToolBarV2();
+ FloatingToolBarV2.Topmost = false;
+ FloatingToolBarV2.Show();
+ FloatingToolBarV2.Owner = this;
+
+ FloatingToolBarV2.FloatingBarToolSelectionChanged += FloatingToolBarV2_ToolSelectionChanged;
+ FloatingToolBarV2.FloatingBarToolButtonClicked += FloatingToolBarV2_ToolButtonClicked;
+ }
+
+ #region 工具切换
+
+ private void SwitchToCursorMode() {
+ // 结束未完成的形状绘制
+ if (ShapeDrawingV2Layer.IsInShapeDrawingMode) ShapeDrawingV2Layer.EndShapeDrawing();
+
+ // 切换前自动截图保存墨迹
+ if (inkCanvas.Strokes.Count > 0 &&
+ inkCanvas.Strokes.Count > Settings.Automation.MinimumAutomationStrokeNumber) {
+ if (BorderFloatingBarExitPPTBtn.Visibility == Visibility.Visible) SavePPTScreenshot($"{pptName}/{previousSlideID}_{DateTime.Now:HH-mm-ss}");
+ else SaveScreenshot(true);
+ }
+
+
+ inkCanvas.Visibility = Settings.Canvas.HideStrokeWhenSelecting ? Visibility.Collapsed : Visibility.Visible;
+ inkCanvas.IsHitTestVisible = false;
+ SetTransparentHitThrough();
+
+ GridBackgroundCoverHolder.Visibility = Visibility.Collapsed;
+ inkCanvas.Select(new StrokeCollection());
+ GridInkCanvasSelectionCover.Visibility = Visibility.Collapsed;
+
+ RectangleSelectionHitTestBorder.Visibility = Visibility.Collapsed;
+
+ if (currentMode != 0) {
+ SaveStrokes();
+ RestoreStrokes(true);
+ }
+ }
+
+ private void SwitchToPenMode() {
+ // 结束未完成的形状绘制
+ if (ShapeDrawingV2Layer.IsInShapeDrawingMode) ShapeDrawingV2Layer.EndShapeDrawing();
+
+ inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
+
+ SetTransparentNotHitThrough();
+ inkCanvas.IsHitTestVisible = true;
+ inkCanvas.Visibility = Visibility.Visible;
+
+ GridBackgroundCoverHolder.Visibility = Visibility.Visible;
+ GridInkCanvasSelectionCover.Visibility = Visibility.Collapsed;
+
+ ColorSwitchCheck();
+ }
+
+ private void ClearInkCanvasStrokes(bool isClearTimeMachineHistory, bool isErasedByCode) {
+ if (inkCanvas.GetSelectedStrokes().Count > 0) {
+ inkCanvas.Strokes.Remove(inkCanvas.GetSelectedStrokes());
+ // cancel
+ GridInkCanvasSelectionCover.Visibility = Visibility.Collapsed;
+ inkCanvas.Opacity = 1;
+ InkSelectionStrokesOverlay.Visibility = Visibility.Collapsed;
+ InkSelectionStrokesBackgroundInkCanvas.Visibility = Visibility.Collapsed;
+ InkSelectionStrokesOverlay.DrawStrokes(new StrokeCollection(), new Matrix());
+ UpdateStrokeSelectionBorder(false, null);
+ RectangleSelectionHitTestBorder.Visibility = Visibility.Visible;
+ } else if (inkCanvas.Strokes.Count > 0) {
+ if (Settings.Automation.IsAutoSaveStrokesAtClear &&
+ inkCanvas.Strokes.Count > Settings.Automation.MinimumAutomationStrokeNumber) {
+ if (BorderFloatingBarExitPPTBtn.Visibility == Visibility.Visible)
+ SavePPTScreenshot($"{pptName}/{previousSlideID}_{DateTime.Now:HH-mm-ss}");
+ else
+ SaveScreenshot(true);
+ }
+
+ forceEraser = false;
+
+ if (currentMode == 0) {
+ // 先回到画笔再清屏,避免 TimeMachine 的相关 bug 影响
+ if (Pen_Icon.Background == null && StackPanelCanvasControls.Visibility == Visibility.Visible) SwitchToPenMode();
+ } else if (Pen_Icon.Background == null) SwitchToPenMode();
+
+ if (inkCanvas.Strokes.Count != 0) {
+ var whiteboardIndex = CurrentWhiteboardIndex;
+ if (currentMode == 0) whiteboardIndex = 0;
+ strokeCollections[whiteboardIndex] = inkCanvas.Strokes.Clone();
+ }
+
+ ClearStrokes(false);
+ inkCanvas.Children.Clear();
+
+ CancelSingleFingerDragMode();
+
+ if (isClearTimeMachineHistory) {
+ inkCanvas.Strokes.Clear();
+ timeMachine.ClearStrokeHistory();
+ } else {
+ _currentCommitType = CommitReason.ClearingCanvas;
+ if (isErasedByCode) _currentCommitType = CommitReason.CodeInput;
+ inkCanvas.Strokes.Clear();
+ _currentCommitType = CommitReason.UserInput;
+ }
+ }
+ }
+
+ #endregion
+
+ private void FloatingToolBarV2_ToolSelectionChanged(object sender, EventArgs e) {
+ var item = (FloatingBarItem)sender;
+ if (item.ToolType == ICCToolsEnum.CursorMode) SwitchToCursorMode();
+ if (item.ToolType == ICCToolsEnum.PenMode) SwitchToPenMode();
+ }
+
+ private void FloatingToolBarV2_ToolButtonClicked(object sender, EventArgs e) {
+ var item = (FloatingBarItem)sender;
+ if (item.Name == "Clear") ClearInkCanvasStrokes(Settings.Canvas.ClearCanvasAndClearTimeMachine,false);
+ }
+ }
+}
diff --git a/InkCanvasForClass/MainWindow_cs/MW_WindowsInk.cs b/InkCanvasForClass/MainWindow_cs/MW_WindowsInk.cs
index da8a732..e36085d 100644
--- a/InkCanvasForClass/MainWindow_cs/MW_WindowsInk.cs
+++ b/InkCanvasForClass/MainWindow_cs/MW_WindowsInk.cs
@@ -1,4 +1,5 @@
-using System;
+using Ink_Canvas.Helpers;
+using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
@@ -10,7 +11,7 @@ using System.Windows.Input;
namespace Ink_Canvas
{
- public partial class MainWindow : Window {
+ public partial class MainWindow : PerformanceTransparentWin {
private bool _stylusInverted = false;
private int _stylusInvertedInit = 0;
diff --git a/InkCanvasForClass/Popups/FloatingToolBarV2.xaml.cs b/InkCanvasForClass/Popups/FloatingToolBarV2.xaml.cs
index 6652c9c..ff2a344 100644
--- a/InkCanvasForClass/Popups/FloatingToolBarV2.xaml.cs
+++ b/InkCanvasForClass/Popups/FloatingToolBarV2.xaml.cs
@@ -583,18 +583,21 @@ namespace Ink_Canvas
}
}
+ public event EventHandler FloatingBarToolSelectionChanged;
+ public event EventHandler FloatingBarToolButtonClicked;
+
private void OnToolSelectionChanged(FloatingBarItem sender) {
if (ToolBarNowVariantMode == 3) return;
- HideAllPopups();
+ Dispatcher.InvokeAsync(() => HideAllPopups());
if (sender.Selected && sender.ToolType != MainWindow.ICCToolsEnum.CursorMode) {
if (ToolBarNowVariantMode != 0) UpdateToolBarVariant(0);
} else {
if (ToolBarNowVariantMode != 1) UpdateToolBarVariant(1);
}
+ FloatingBarToolSelectionChanged?.Invoke(sender,EventArgs.Empty);
}
private void OnToolButtonClicked(FloatingBarItem sender, Grid container) {
-
if (sender.ToolType == MainWindow.ICCToolsEnum.PenMode) {
if (PenPaletteV2Popup.IsOpen) {
HideAllPopups();
@@ -626,6 +629,7 @@ namespace Ink_Canvas
ShapeDrawingPopupV2.IsOpen = true;
}
}
+ FloatingBarToolButtonClicked?.Invoke(sender,EventArgs.Empty);
}
private void ToolbarButton_MouseDown(object sender, MouseButtonEventArgs e) {
diff --git a/InkCanvasForClass/Resources/Settings.cs b/InkCanvasForClass/Resources/Settings.cs
index 0d1c294..da16e8f 100644
--- a/InkCanvasForClass/Resources/Settings.cs
+++ b/InkCanvasForClass/Resources/Settings.cs
@@ -276,8 +276,7 @@ namespace Ink_Canvas
public bool IsShowCanvasAtNewSlideShow { get; set; } = true;
[JsonProperty("isNoClearStrokeOnSelectWhenInPowerPoint")]
public bool IsNoClearStrokeOnSelectWhenInPowerPoint { get; set; } = true;
- [JsonProperty("isShowStrokeOnSelectInPowerPoint")]
- public bool IsShowStrokeOnSelectInPowerPoint { get; set; } = false;
+
[JsonProperty("isAutoSaveStrokesInPowerPoint")]
public bool IsAutoSaveStrokesInPowerPoint { get; set; } = true;
[JsonProperty("isAutoSaveScreenShotInPowerPoint")]
diff --git a/InkCanvasForClass/Windows/SettingsViews/AppearancePanel.xaml b/InkCanvasForClass/Windows/SettingsViews/AppearancePanel.xaml
new file mode 100644
index 0000000..c106787
--- /dev/null
+++ b/InkCanvasForClass/Windows/SettingsViews/AppearancePanel.xaml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/InkCanvasForClass/Windows/SettingsViews/AppearancePanel.xaml.cs b/InkCanvasForClass/Windows/SettingsViews/AppearancePanel.xaml.cs
new file mode 100644
index 0000000..0633ab5
--- /dev/null
+++ b/InkCanvasForClass/Windows/SettingsViews/AppearancePanel.xaml.cs
@@ -0,0 +1,77 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+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 Windows.UI.ApplicationSettings;
+
+namespace Ink_Canvas.Windows.SettingsViews {
+ public partial class AppearancePanel : UserControl {
+ public AppearancePanel() {
+ InitializeComponent();
+ BaseView.SettingsPanels.Add(new SettingsViewPanel() {
+ Title = "新版设置测试",
+ Items = new ObservableCollection(new SettingsItem[] {
+ new SettingsItem() {
+ Title = "默认ToggleSwitch",
+ Description = "这是测试文本,这是测试文本",
+ Type = SettingsItemType.SingleToggleSwtich,
+ IsSeparatorVisible = true
+ },
+ new SettingsItem() {
+ Title = "默认开启的ToggleSwitch",
+ Description = "这是测试文本,这是测试文本324234324",
+ Type = SettingsItemType.SingleToggleSwtich,
+ IsSeparatorVisible = true,
+ ToggleSwitchToggled = true,
+ },
+ new SettingsItem() {
+ Title = "默认关闭的ToggleSwitch",
+ Description = "这是测试文本,这是测试文本fsdsdffsd",
+ Type = SettingsItemType.SingleToggleSwtich,
+ IsSeparatorVisible = true,
+ ToggleSwitchToggled = false,
+ },
+ new SettingsItem() {
+ Title = "绿色的ToggleSwitch",
+ Description = "这是测试文本,这是测试文本fs大风刮过4sd",
+ Type = SettingsItemType.SingleToggleSwtich,
+ IsSeparatorVisible = true,
+ ToggleSwitchToggled = true,
+ ToggleSwitchBackground = new SolidColorBrush(Color.FromRgb(51, 209, 122)),
+ },
+ new SettingsItem() {
+ Title = "默认禁用的的ToggleSwitch",
+ Description = "这是测试文本",
+ Type = SettingsItemType.SingleToggleSwtich,
+ IsSeparatorVisible = true,
+ ToggleSwitchToggled = true,
+ ToggleSwitchEnabled = false,
+ ToggleSwitchBackground = new SolidColorBrush(Color.FromRgb(51, 209, 122)),
+ },
+ new SettingsItem() {
+ Title = "控制上面的ToggleSwitch是否启用",
+ Description = "12423432452312322335",
+ Type = SettingsItemType.SingleToggleSwtich,
+ IsSeparatorVisible = true,
+ ToggleSwitchToggled = false,
+ },
+ })
+ });
+ BaseView.SettingsPanels[0].Items[5].OnToggleSwitchToggled += (sender, args) => {
+ var item = (SettingsItem)sender;
+ BaseView.SettingsPanels[0].Items[4].ToggleSwitchEnabled = item.ToggleSwitchToggled;
+ };
+ }
+ }
+}
diff --git a/InkCanvasForClass/Windows/SettingsViews/FloatingBarDnDSettingsPanel.xaml b/InkCanvasForClass/Windows/SettingsViews/FloatingBarDnDSettingsPanel.xaml
new file mode 100644
index 0000000..164d44c
--- /dev/null
+++ b/InkCanvasForClass/Windows/SettingsViews/FloatingBarDnDSettingsPanel.xaml
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/InkCanvasForClass/Windows/SettingsViews/FloatingBarDnDSettingsPanel.xaml.cs b/InkCanvasForClass/Windows/SettingsViews/FloatingBarDnDSettingsPanel.xaml.cs
new file mode 100644
index 0000000..cecbade
--- /dev/null
+++ b/InkCanvasForClass/Windows/SettingsViews/FloatingBarDnDSettingsPanel.xaml.cs
@@ -0,0 +1,124 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Diagnostics;
+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 GongSolutions.Wpf.DragDrop;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement.Menu;
+
+namespace Ink_Canvas.Windows.SettingsViews {
+
+ public partial class FloatingBarDnDSettingsPanel : UserControl {
+
+ public class BarItemsDropTarget : IDropTarget {
+ public ObservableCollection BarItems { get; set; } =
+ new ObservableCollection();
+
+ void IDropTarget.DragOver(IDropInfo info) {
+ info.Effects = DragDropEffects.Move;
+ info.DropTargetAdorner = DropTargetAdorners.Insert;
+ }
+
+ void IDropTarget.Drop(IDropInfo info) {
+ if (info.Data is FloatingBarItem draggedItem) {
+ var targetCollection = info.TargetCollection as ObservableCollection;
+ var sourceCollection = info.DragInfo.SourceCollection as ObservableCollection;
+
+ Trace.WriteLine(info.InsertIndex);
+
+ // 在同一个 ObservableCollection 中移动
+ if (targetCollection.Equals(sourceCollection)) {
+ if (info.InsertIndex == 0) {
+ targetCollection.Move(targetCollection.IndexOf(info.Data as FloatingBarItem),0);
+ } else if (info.InsertIndex == targetCollection.Count) {
+ targetCollection.Remove(info.Data as FloatingBarItem);
+ targetCollection.Add(info.Data as FloatingBarItem);
+ } else if ((info.InsertIndex - targetCollection.IndexOf(info.Data as FloatingBarItem) == 1 &&
+ info.InsertPosition == RelativeInsertPosition.AfterTargetItem) ||
+ (info.InsertIndex - targetCollection.IndexOf(info.Data as FloatingBarItem) == 0 &&
+ info.InsertPosition == RelativeInsertPosition.BeforeTargetItem)) { } else {
+ targetCollection.Move(targetCollection.IndexOf(info.Data as FloatingBarItem),info.InsertIndex - 1);
+ }
+ } else { // 跨 ObservableCollection 移动
+ sourceCollection.Remove(info.Data as FloatingBarItem);
+ targetCollection.Insert(info.InsertIndex, info.Data as FloatingBarItem);
+ }
+ }
+ }
+
+ void IDropTarget.DragEnter(IDropInfo info) {
+
+ }
+
+ void IDropTarget.DragLeave(IDropInfo info) {
+
+ }
+
+ }
+
+ public class BarDrawerItemsDropTarget : IDropTarget {
+ public ObservableCollection BarDrawerItems { get; set; } =
+ new ObservableCollection();
+
+ void IDropTarget.DragOver(IDropInfo info) {
+ info.Effects = DragDropEffects.Move;
+ info.DropTargetAdorner = DropTargetAdorners.Insert;
+ }
+
+ void IDropTarget.Drop(IDropInfo info) {
+ if (info.Data is FloatingBarItem draggedItem) {
+ var targetCollection = info.TargetCollection as ObservableCollection;
+ var sourceCollection = info.DragInfo.SourceCollection as ObservableCollection;
+
+ // 在同一个 ObservableCollection 中移动
+ if (targetCollection.Equals(sourceCollection)) {
+ targetCollection.Insert(info.InsertIndex, info.Data as FloatingBarItem);
+ } else { // 跨 ObservableCollection 移动
+ sourceCollection.Remove(info.Data as FloatingBarItem);
+ targetCollection.Insert(info.InsertIndex, info.Data as FloatingBarItem);
+ }
+ }
+ }
+
+ void IDropTarget.DragEnter(IDropInfo info) {
+
+ }
+
+ void IDropTarget.DragLeave(IDropInfo info) {
+
+ }
+
+ }
+
+ public BarItemsDropTarget barItems { get; set; } = new BarItemsDropTarget();
+ public BarDrawerItemsDropTarget barDrawerItems { get; set; } = new BarDrawerItemsDropTarget();
+
+ public FloatingBarDnDSettingsPanel() {
+ InitializeComponent();
+
+ ToolbarItemsControl.DataContext = barItems;
+ ToolbarDrawerItemsControl.DataContext = barDrawerItems;
+
+ barItems.BarItems.Add(new FloatingBarItem() {
+ IconSource = FindResource("EraserIcon") as DrawingImage,
+ });
+ barDrawerItems.BarDrawerItems.Add(new FloatingBarItem() {
+ IconSource = FindResource("CursorIcon") as DrawingImage,
+ });
+ barDrawerItems.BarDrawerItems.Add(new FloatingBarItem() {
+ IconSource = FindResource("PenIcon") as DrawingImage,
+ });
+ }
+ }
+}
diff --git a/InkCanvasForClass/Windows/SettingsViews/SettingsBaseView.xaml b/InkCanvasForClass/Windows/SettingsViews/SettingsBaseView.xaml
index a5d752c..4e41db9 100644
--- a/InkCanvasForClass/Windows/SettingsViews/SettingsBaseView.xaml
+++ b/InkCanvasForClass/Windows/SettingsViews/SettingsBaseView.xaml
@@ -4,11 +4,12 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Ink_Canvas.Windows.SettingsViews"
+ xmlns:components="clr-namespace:Ink_Canvas.Components"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
-
+
@@ -16,6 +17,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/InkCanvasForClass/Windows/SettingsViews/SettingsBaseView.xaml.cs b/InkCanvasForClass/Windows/SettingsViews/SettingsBaseView.xaml.cs
index 5c6d458..9c012bc 100644
--- a/InkCanvasForClass/Windows/SettingsViews/SettingsBaseView.xaml.cs
+++ b/InkCanvasForClass/Windows/SettingsViews/SettingsBaseView.xaml.cs
@@ -1,5 +1,8 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -13,17 +16,84 @@ using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
+using Ink_Canvas.Components;
using iNKORE.UI.WPF.Helpers;
namespace Ink_Canvas.Windows.SettingsViews {
- ///
- /// SettingsBaseView.xaml 的交互逻辑
- ///
+
+ public class SettingsViewPanel {
+ public string Title { get; set; }
+ public Visibility _TitleVisibility => String.IsNullOrWhiteSpace(Title) ? Visibility.Collapsed : Visibility.Visible;
+ public Thickness _PanelMargin =>
+ String.IsNullOrWhiteSpace(Title) ? new Thickness(0) : new Thickness(0, 12, 0, 0);
+ public ObservableCollection Items { get; set; } = new ObservableCollection() { };
+ }
+
+ public enum SettingsItemType {
+ Plain, // 只显示Title和Description
+ SingleToggleSwtich,
+ ToggleSwitchWithArrowButton,
+ SelectionButtons,
+ }
+
+ public class SettingsItem : INotifyPropertyChanged {
+ public string Title { get; set; }
+ public string Description { get; set; }
+ public SettingsItemType Type { get; set; } = SettingsItemType.Plain;
+ public bool IsClickable { get; set; } = false;
+ public bool IsSeparatorVisible { get; set; } = true;
+ public Visibility _SeparatorVisibility => IsSeparatorVisible ? Visibility.Visible : Visibility.Collapsed;
+ public Visibility _ToggleSwitchVisibility =>
+ Type == SettingsItemType.SingleToggleSwtich || Type == SettingsItemType.ToggleSwitchWithArrowButton ? Visibility.Visible : Visibility.Collapsed;
+ private bool _toggleSwitchToggled;
+ public bool ToggleSwitchToggled {
+ get => _toggleSwitchToggled;
+ set {
+ if (_toggleSwitchToggled != value) {
+ _toggleSwitchToggled = value;
+ OnPropertyChanged(nameof(ToggleSwitchToggled)); // 通知绑定控件属性变化
+ OnToggleSwitchToggled?.Invoke(this, EventArgs.Empty); // 触发事件
+ }
+ }
+ }
+ public event EventHandler OnToggleSwitchToggled;
+ public event PropertyChangedEventHandler PropertyChanged;
+ protected virtual void OnPropertyChanged(string propertyName) {
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
+ }
+
+ private SolidColorBrush _toggleSwitchBackground = new SolidColorBrush(Color.FromRgb(53, 132, 228));
+ public SolidColorBrush ToggleSwitchBackground {
+ get => _toggleSwitchBackground;
+ set {
+ if (_toggleSwitchBackground != value) {
+ _toggleSwitchBackground = value;
+ OnPropertyChanged(nameof(ToggleSwitchBackground)); // 通知绑定控件属性变化
+ }
+ }
+ }
+
+ private bool _toggleSwitchEnabled = true;
+ public bool ToggleSwitchEnabled {
+ get => _toggleSwitchEnabled;
+ set {
+ if (_toggleSwitchEnabled != value) {
+ _toggleSwitchEnabled = value;
+ OnPropertyChanged(nameof(ToggleSwitchEnabled)); // 通知绑定控件属性变化
+ }
+ }
+ }
+ }
+
public partial class SettingsBaseView : UserControl {
public SettingsBaseView() {
InitializeComponent();
+ SettingsViewBaseItemsControl.ItemsSource = SettingsPanels;
}
+ public ObservableCollection SettingsPanels { get; set; } =
+ new ObservableCollection() { };
+
public event EventHandler IsTopBarNeedShadowEffect;
public event EventHandler IsTopBarNeedNoShadowEffect;
@@ -66,6 +136,12 @@ namespace Ink_Canvas.Windows.SettingsViews {
}
}
+ private void ToggleSwitch_OnToggled(object sender, RoutedEventArgs e) {
+ var toggleswitch = sender as ToggleSwitch;
+ var item = toggleswitch.Tag as SettingsItem;
+ item.ToggleSwitchToggled = toggleswitch.IsOn;
+ }
+
private void ScrollBarTrack_MouseLeave(object sender, MouseEventArgs e) {
var border = (Border)sender;
border.Background = new SolidColorBrush(Colors.Transparent);
diff --git a/InkCanvasForClass/Windows/SettingsWindow.xaml b/InkCanvasForClass/Windows/SettingsWindow.xaml
index f39bc7a..aef3001 100644
--- a/InkCanvasForClass/Windows/SettingsWindow.xaml
+++ b/InkCanvasForClass/Windows/SettingsWindow.xaml
@@ -568,7 +568,7 @@
-
+
@@ -862,6 +862,7 @@
+
@@ -1328,8 +1329,8 @@
-
-
+
+
@@ -1843,6 +1844,9 @@
+
+
+
diff --git a/InkCanvasForClass/Windows/SettingsWindow.xaml.cs b/InkCanvasForClass/Windows/SettingsWindow.xaml.cs
index 3c9d667..bb2c913 100644
--- a/InkCanvasForClass/Windows/SettingsWindow.xaml.cs
+++ b/InkCanvasForClass/Windows/SettingsWindow.xaml.cs
@@ -22,6 +22,7 @@ using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Ink_Canvas.Popups;
+using Ink_Canvas.Windows.SettingsViews;
using iNKORE.UI.WPF.Helpers;
using iNKORE.UI.WPF.Modern.Controls;
using OSVersionExtension;
@@ -161,7 +162,7 @@ namespace Ink_Canvas.Windows {
CanvasAndInkScrollViewerEx,
GesturesScrollViewerEx,
StartupScrollViewerEx,
- AppearanceScrollViewerEx,
+ (AppearancePane.Children[0] as AppearancePanel).BaseView.SettingsViewScrollViewer,
InkRecognitionScrollViewerEx,
AutomationScrollViewerEx,
PowerPointScrollViewerEx
diff --git a/docs/README.md b/docs/README.md
new file mode 100644
index 0000000..9069b56
--- /dev/null
+++ b/docs/README.md
@@ -0,0 +1,8 @@
+# ICC 开发文档
+
+## 组件库
+
+ICC 自己造了一套风格类似于 Gnome Gtk4 的 WPF 组件库,下面有具体每个控件的文档:
+
+1. [`ToggleSwitch`](./components/ToggleSwitch.md) Gtk.Switch 青春版,切换开关状态的按钮控件
+2. [`SegmentedButtons`]() 类似 Gtk.StackSwitcher 的分段单选按钮
\ No newline at end of file
diff --git a/docs/components/SegmentedButtons.md b/docs/components/SegmentedButtons.md
new file mode 100644
index 0000000..e69de29
diff --git a/docs/components/ToggleSwitch.md b/docs/components/ToggleSwitch.md
new file mode 100644
index 0000000..c55b394
--- /dev/null
+++ b/docs/components/ToggleSwitch.md
@@ -0,0 +1,31 @@
+# ToggleSwitch
+
+## 定义
+
+命名空间:`Ink_Canvas.Components`
+
+ToggleSwitch 开关按钮,只有开和关两种状态,可通过点击来切换状态。
+
+## 属性
+
+| Name | Description |
+|------|-------------|
+| `IsOn` | 指示是否为开启状态 |
+| `IsEnabled` | 指示是否可用,不可用透明度减半且无HitTest,无TabStop |
+| `IsDisplayTextIndicator` | 指示是否显示文字提示,I 和 O (WIP) |
+| `OnContent` | 指示开启时的文字,为空或不指定则不显示 (WIP) |
+| `OffContent` | 指示关闭时的文字,为空或不指定则不显示 (WIP) |
+| `SwitchBackground` | 指示切换按钮的背景色,不设置则采用默认颜色 |
+| `ThumbForeground` | 指示切换按钮Thumb的颜色,不设置则采用默认颜色 (WIP) |
+| `IsEnableClickFeedback` | 指示是否启用点击时的变暗反馈 (WIP) |
+| `IsReduceAnimations` | 指示是否减弱动画效果 (WIP) |
+| `SwitchSize` | 指示ToggleSwitch的大小 (WIP) |
+
+## 事件
+
+| Name | Description |
+|------|-------------|
+| `OnToggled` | 当切换按钮的开关状态被修改时触发 |
+| `IsEnableClickFeedbackChanged` | 当 `IsEnableClickFeedback` 被修改时触发 (WIP) |
+| `IsReduceAnimationsChanged` | 当 `IsReduceAnimations` 被修改时触发 (WIP) |
+| `OnSwitchsizeChanged` | 当 `SwitchSize` 变化时触发 (WIP) |
\ No newline at end of file