[update] 全新的调色盘(该commit未完工)

This commit is contained in:
Dubi906w 2024-07-15 22:11:47 +08:00
parent d32724254b
commit 38631c9205
42 changed files with 1190 additions and 875 deletions

4
.gitignore vendored
View File

@ -4,9 +4,5 @@
/InkCanvasForClassX/bin /InkCanvasForClassX/bin
/InkCanvasForClassPPTVsto/obj /InkCanvasForClassPPTVsto/obj
/InkCanvasForClassPPTVsto/bin /InkCanvasForClassPPTVsto/bin
/PeroInstaller/obj
/PeroInstaller/bin
/CvtePaintDemo/obj
/CvtePaintDemo/bin
/.vs /.vs
/.idea /.idea

View File

@ -1 +0,0 @@
# Assets

View File

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

View File

@ -1,9 +0,0 @@
<Application x:Class="CvtePaintDemo.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CvtePaintDemo"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>

View File

@ -1,17 +0,0 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
namespace CvtePaintDemo
{
/// <summary>
/// App.xaml 的交互逻辑
/// </summary>
public partial class App : Application
{
}
}

View File

@ -1,13 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
<OutputType>WinExe</OutputType>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<UseWPF>true</UseWPF>
<ImportWindowsDesktopTargets>true</ImportWindowsDesktopTargets>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" />
</ItemGroup>
</Project>

View File

@ -1,12 +0,0 @@
<Window x:Class="CvtePaintDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CvtePaintDemo"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
</Grid>
</Window>

View File

@ -1,28 +0,0 @@
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 CvtePaintDemo
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}

View File

@ -1,55 +0,0 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("CvtePaintDemo")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CvtePaintDemo")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
//若要开始生成可本地化的应用程序,请设置
//.csproj 文件中的 <UICulture>CultureYouAreCodingWith</UICulture>
//在 <PropertyGroup> 中。例如,如果你使用的是美国英语。
//使用的是美国英语,请将 <UICulture> 设置为 en-US。 然后取消
//对以下 NeutralResourceLanguage 特性的注释。 更新
//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //主题特定资源词典所处位置
//(未在页面中找到资源时使用,
//或应用程序资源字典中找到时使用)
ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置
//(未在页面中找到资源时使用,
//、应用程序或任何主题专用资源字典中找到时使用)
)]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -1,71 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本: 4.0.30319.42000
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace CvtePaintDemo.Properties
{
/// <summary>
/// 强类型资源类,用于查找本地化字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// 返回此类使用的缓存 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CvtePaintDemo.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View File

@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -1,30 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace CvtePaintDemo.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View File

@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@ -1 +0,0 @@
# Demos

View File

@ -7,16 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InkCanvasForClassX", "InkCa
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InkCanvasForClass", "InkCanvasForClass\InkCanvasForClass.csproj", "{2474F5B0-6FA7-4D70-8A00-167BBB03264D}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "InkCanvasForClass", "InkCanvasForClass\InkCanvasForClass.csproj", "{2474F5B0-6FA7-4D70-8A00-167BBB03264D}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CvtePaintDemo", "CvtePaintDemo\CvtePaintDemo.csproj", "{26F0E9DD-A9DC-45D1-97B9-337C63863837}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Demos", "Demos", "{0B6F0669-8945-4AC7-923D-145BF23C38A0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Assets", "Assets", "{D31A4267-C13F-41FE-8516-3B633E3B1990}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InkCanvasForClassPPTVsto", "InkCanvasForClassPPTVsto\InkCanvasForClassPPTVsto.csproj", "{E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InkCanvasForClassPPTVsto", "InkCanvasForClassPPTVsto\InkCanvasForClassPPTVsto.csproj", "{E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PeroInstaller", "PeroInstaller\PeroInstaller.csproj", "{AB1CC983-E30D-4597-A858-05DF7DF7664C}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -96,36 +88,6 @@ Global
{2474F5B0-6FA7-4D70-8A00-167BBB03264D}.x86 Debug|x64.Build.0 = x86 Debug|Any CPU {2474F5B0-6FA7-4D70-8A00-167BBB03264D}.x86 Debug|x64.Build.0 = x86 Debug|Any CPU
{2474F5B0-6FA7-4D70-8A00-167BBB03264D}.x86 Debug|x86.ActiveCfg = x86 Debug|Any CPU {2474F5B0-6FA7-4D70-8A00-167BBB03264D}.x86 Debug|x86.ActiveCfg = x86 Debug|Any CPU
{2474F5B0-6FA7-4D70-8A00-167BBB03264D}.x86 Debug|x86.Build.0 = x86 Debug|Any CPU {2474F5B0-6FA7-4D70-8A00-167BBB03264D}.x86 Debug|x86.Build.0 = x86 Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Debug|Any CPU.Build.0 = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Debug|ARM.ActiveCfg = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Debug|ARM.Build.0 = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Debug|ARM64.Build.0 = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Debug|x64.ActiveCfg = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Debug|x64.Build.0 = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Debug|x86.ActiveCfg = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Debug|x86.Build.0 = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Release|Any CPU.ActiveCfg = Release|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Release|Any CPU.Build.0 = Release|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Release|ARM.ActiveCfg = Release|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Release|ARM.Build.0 = Release|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Release|ARM64.ActiveCfg = Release|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Release|ARM64.Build.0 = Release|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Release|x64.ActiveCfg = Release|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Release|x64.Build.0 = Release|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Release|x86.ActiveCfg = Release|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.Release|x86.Build.0 = Release|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.x86 Debug|Any CPU.ActiveCfg = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.x86 Debug|Any CPU.Build.0 = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.x86 Debug|ARM.ActiveCfg = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.x86 Debug|ARM.Build.0 = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.x86 Debug|ARM64.ActiveCfg = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.x86 Debug|ARM64.Build.0 = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.x86 Debug|x64.ActiveCfg = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.x86 Debug|x64.Build.0 = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.x86 Debug|x86.ActiveCfg = Debug|Any CPU
{26F0E9DD-A9DC-45D1-97B9-337C63863837}.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.ActiveCfg = Debug|Any CPU
{E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.Debug|Any CPU.Build.0 = 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.ActiveCfg = Debug|Any CPU
@ -156,36 +118,6 @@ Global
{E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|x64.Build.0 = 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.ActiveCfg = Debug|Any CPU
{E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|x86.Build.0 = Debug|Any CPU {E494CFFE-D2EC-4BAD-82D9-C92FE29616A7}.x86 Debug|x86.Build.0 = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Debug|ARM.ActiveCfg = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Debug|ARM.Build.0 = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Debug|ARM64.Build.0 = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Debug|x64.ActiveCfg = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Debug|x64.Build.0 = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Debug|x86.ActiveCfg = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Debug|x86.Build.0 = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Release|Any CPU.Build.0 = Release|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Release|ARM.ActiveCfg = Release|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Release|ARM.Build.0 = Release|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Release|ARM64.ActiveCfg = Release|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Release|ARM64.Build.0 = Release|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Release|x64.ActiveCfg = Release|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Release|x64.Build.0 = Release|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Release|x86.ActiveCfg = Release|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.Release|x86.Build.0 = Release|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.x86 Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.x86 Debug|Any CPU.Build.0 = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.x86 Debug|ARM.ActiveCfg = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.x86 Debug|ARM.Build.0 = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.x86 Debug|ARM64.ActiveCfg = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.x86 Debug|ARM64.Build.0 = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.x86 Debug|x64.ActiveCfg = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.x86 Debug|x64.Build.0 = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.x86 Debug|x86.ActiveCfg = Debug|Any CPU
{AB1CC983-E30D-4597-A858-05DF7DF7664C}.x86 Debug|x86.Build.0 = Debug|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

View File

@ -197,6 +197,10 @@
<Resource Include="Resources\Icons-png\AdmoxBooth.png" /> <Resource Include="Resources\Icons-png\AdmoxBooth.png" />
<Resource Include="Resources\Icons-png\AdmoxWhiteboard.png" /> <Resource Include="Resources\Icons-png\AdmoxWhiteboard.png" />
<Resource Include="Resources\Icons-png\check-box-background.png" /> <Resource Include="Resources\Icons-png\check-box-background.png" />
<Resource Include="Resources\Icons-png\classic-icons\disk-drive.png" />
<Resource Include="Resources\Icons-png\classic-icons\documents-folder.png" />
<Resource Include="Resources\Icons-png\classic-icons\folder.png" />
<Resource Include="Resources\Icons-png\classic-icons\system-drive.png" />
<Resource Include="Resources\Icons-png\Donview.png" /> <Resource Include="Resources\Icons-png\Donview.png" />
<Resource Include="Resources\Icons-png\EasiNote3.png" /> <Resource Include="Resources\Icons-png\EasiNote3.png" />
<Resource Include="Resources\Icons-png\eraser-line.png" /> <Resource Include="Resources\Icons-png\eraser-line.png" />
@ -498,6 +502,10 @@
<None Remove="Resources\icc.ico" /> <None Remove="Resources\icc.ico" />
<None Remove="Resources\Icons-png\AdmoxBooth.png" /> <None Remove="Resources\Icons-png\AdmoxBooth.png" />
<None Remove="Resources\Icons-png\AdmoxWhiteboard.png" /> <None Remove="Resources\Icons-png\AdmoxWhiteboard.png" />
<None Remove="Resources\Icons-png\classic-icons\disk-drive.png" />
<None Remove="Resources\Icons-png\classic-icons\documents-folder.png" />
<None Remove="Resources\Icons-png\classic-icons\folder.png" />
<None Remove="Resources\Icons-png\classic-icons\system-drive.png" />
<None Remove="Resources\Icons-png\Donview.png" /> <None Remove="Resources\Icons-png\Donview.png" />
<None Remove="Resources\Icons-png\EasiNote3.png" /> <None Remove="Resources\Icons-png\EasiNote3.png" />
<None Remove="Resources\Icons-png\HiteAnnotation.png" /> <None Remove="Resources\Icons-png\HiteAnnotation.png" />

View File

@ -7,4 +7,14 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor> <DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<Compile Update="Popups\ColorPalette.xaml.cs">
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Page Update="Popups\ColorPalette.xaml">
<SubType>Designer</SubType>
</Page>
</ItemGroup>
</Project> </Project>

View File

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern" xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
xmlns:c="clr-namespace:Ink_Canvas.Converter" xmlns:c="clr-namespace:Ink_Canvas.Converter"
xmlns:Controls="http://schemas.microsoft.com/netfx/2009/xaml/presentation" xmlns:Controls="http://schemas.microsoft.com/netfx/2009/xaml/presentation" xmlns:popups="clr-namespace:Ink_Canvas.Popups"
mc:Ignorable="d" mc:Ignorable="d"
AllowsTransparency="True" AllowsTransparency="True"
WindowStyle="None" WindowStyle="None"
@ -106,6 +106,10 @@
<Grid x:Name="Main_Grid"> <Grid x:Name="Main_Grid">
<Popup IsOpen="True" StaysOpen="True" AllowsTransparency="True" Placement="AbsolutePoint">
<popups:ColorPalette Width="300" Height="450"/>
</Popup>
<!--// 黑/白 板幕布 //--> <!--// 黑/白 板幕布 //-->
<Grid Name="GridBackgroundCoverHolder"> <Grid Name="GridBackgroundCoverHolder">
<Grid Name="GridBackgroundCover" Visibility="Collapsed" Background="#1F1F1F" /> <Grid Name="GridBackgroundCover" Visibility="Collapsed" Background="#1F1F1F" />
@ -3212,7 +3216,7 @@
</Border> </Border>
</Viewbox> </Viewbox>
<Border Name="FloatingBarTextVisibilityBindingLikeAPieceOfShit" Width="0" Height="0" Visibility="Collapsed"/> <Border Name="FloatingBarTextVisibilityBindingLikeAPieceOfShit" Width="0" Height="0" Visibility="Collapsed" />
<Grid Name="FloatingbarUIForInkReplay"> <Grid Name="FloatingbarUIForInkReplay">
@ -3242,8 +3246,8 @@
</Image.Source> </Image.Source>
</Image> </Image>
<TextBlock FontSize="10" VerticalAlignment="Center" Foreground="White"> <TextBlock FontSize="10" VerticalAlignment="Center" Foreground="White">
<Run Text="按住鼠标右键移动" FontWeight="Bold"/> <Run Text="按住鼠标右键移动" FontWeight="Bold" />
<Run Text="可拖动画布"/> <Run Text="可拖动画布" />
</TextBlock> </TextBlock>
</StackPanel> </StackPanel>
</Border> </Border>
@ -7008,7 +7012,7 @@
FontFamily="Microsoft YaHei UI" FontWeight="Bold" /> FontFamily="Microsoft YaHei UI" FontWeight="Bold" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<TextBlock TextWrapping="Wrap" Foreground="#a1a1aa" <TextBlock TextWrapping="Wrap" Foreground="#a1a1aa"
Text="# 当检测到窗口大小变化时自动使用Win32API将本窗口的大小设置为主显示器大小设备像素大小实时生效。" /> Text="# 当检测到窗口大小变化时自动使用Win32API将本窗口的大小设置为主显示器大小设备像素大小同时如果窗口被遮挡则会立刻恢复置顶。该选项重启icc后生效。" />
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left"> <ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="实时确保浮动工具栏显示在屏幕内" <TextBlock Foreground="#fafafa" Text="实时确保浮动工具栏显示在屏幕内"
VerticalAlignment="Center" VerticalAlignment="Center"
@ -7542,10 +7546,169 @@
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<TextBlock Text="# 请注意检查保存文件夹是否有写入权限" TextWrapping="Wrap" Foreground="#a1a1aa" /> <TextBlock Text="# 请注意检查保存文件夹是否有写入权限" TextWrapping="Wrap" Foreground="#a1a1aa" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
</ui:SimpleStackPanel>
</GroupBox>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0" Stroke="#3f3f46" <GroupBox Name="SettingsStorageGroupBox">
StrokeThickness="1" Margin="0,4,0,4" /> <GroupBox.Header>
<Canvas Height="56">
<TextBlock Text="Storage" Foreground="#fafafa" Opacity="0.1"
FontSize="20" Canvas.Top="30" Canvas.Left="16" />
<TextBlock Margin="0,12,0,0" Text="存储" FontWeight="Bold" Foreground="#fafafa"
FontSize="26" Canvas.Top="0" />
</Canvas>
</GroupBox.Header>
<ui:SimpleStackPanel Spacing="6">
<TextBlock Margin="0,0,0,8" Text="存储位置" FontWeight="Bold" Foreground="#fafafa"
FontSize="20" />
<TextBlock Text="# 设置的存储位置用于存放手动保存的墨迹、自动保存的墨迹、手动保存的板书、缓存文件、部分功能的配置文件和屏幕截图。注意icc的设置档存放在icc的安装目录下无法迁移到设置的存储目录。"
TextWrapping="Wrap" Foreground="#a1a1aa" />
<ComboBox Name="ComboBoxStoragePath" FontFamily="Microsoft YaHei UI"
SelectedIndex="1" HorizontalAlignment="Center">
<ComboBoxItem HorizontalContentAlignment="Left">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Width="326">
<Image Width="20" Height="20" Source="Resources/Icons-png/classic-icons/system-drive.png" Controls:RenderOptions.BitmapScalingMode="HighQuality"/>
<TextBlock Width="300" TextTrimming="CharacterEllipsis" Margin="6,0,0,0" VerticalAlignment="Center" FontFamily="Microsoft YaHei UI">
<Run FontWeight="Bold" Text="系统盘 "/>
<Run Text="C:\Users\Dubi906w\InkCanvasForClass"/>
</TextBlock>
</StackPanel>
</ComboBoxItem>
<ComboBoxItem HorizontalContentAlignment="Left">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Width="326">
<Image Width="20" Height="20" Source="Resources/Icons-png/classic-icons/disk-drive.png" Controls:RenderOptions.BitmapScalingMode="HighQuality"/>
<TextBlock Width="300" TextTrimming="CharacterEllipsis" Margin="6,0,0,0" VerticalAlignment="Center" FontFamily="Microsoft YaHei UI">
<Run FontWeight="Bold" Text="D盘 "/>
<Run Text="D:\InkCanvasForClass"/>
</TextBlock>
</StackPanel>
</ComboBoxItem>
<ComboBoxItem HorizontalContentAlignment="Left">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Width="326">
<Image Width="20" Height="20" Source="Resources/Icons-png/classic-icons/disk-drive.png" Controls:RenderOptions.BitmapScalingMode="HighQuality"/>
<TextBlock Width="300" TextTrimming="CharacterEllipsis" Margin="6,0,0,0" VerticalAlignment="Center" FontFamily="Microsoft YaHei UI">
<Run FontWeight="Bold" Text="E盘 "/>
<Run Text="E:\InkCanvasForClass"/>
</TextBlock>
</StackPanel>
</ComboBoxItem>
<ComboBoxItem HorizontalContentAlignment="Left">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Width="326">
<Image Width="20" Height="20" Source="Resources/Icons-png/classic-icons/documents-folder.png" Controls:RenderOptions.BitmapScalingMode="HighQuality"/>
<TextBlock Width="300" TextTrimming="CharacterEllipsis" Margin="6,0,0,0" VerticalAlignment="Center" FontFamily="Microsoft YaHei UI">
<Run FontWeight="Bold" Text="用户“文档”目录 "/>
<Run Text="C:\Users\Dubi906w\Documents"/>
</TextBlock>
</StackPanel>
</ComboBoxItem>
<ComboBoxItem HorizontalContentAlignment="Left">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Width="326">
<Image Width="20" Height="20" Source="Resources/Icons-png/classic-icons/folder.png" Controls:RenderOptions.BitmapScalingMode="HighQuality"/>
<TextBlock Width="300" TextTrimming="CharacterEllipsis" Margin="6,0,0,0" VerticalAlignment="Center" FontFamily="Microsoft YaHei UI">
<Run FontWeight="Bold" Text="icc 运行目录下"/>
<Run Text=".\UserData\"/>
</TextBlock>
</StackPanel>
</ComboBoxItem>
</ComboBox>
<TextBlock Text="# 请注意检查文件夹是否有写入权限" TextWrapping="Wrap" Foreground="#a1a1aa" />
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0"
Stroke="#3f3f46" StrokeThickness="1" Margin="0,4,0,4" />
<TextBlock Margin="0,0,0,8" Text="存储分析" FontWeight="Bold" Foreground="#fafafa"
FontSize="20" />
<TextBlock Text="# 仅分析存储目录下的所有文件"
TextWrapping="Wrap" Foreground="#a1a1aa" />
<ui:SimpleStackPanel Spacing="12" Margin="0,4,0,0">
<StackPanel Orientation="Horizontal">
<Image Margin="0,0,8,0" Height="32" Width="32" VerticalAlignment="Top">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="White" Geometry="F0 M24,24z M0,0z M7,2C6.20435,2 5.44129,2.31607 4.87868,2.87868 4.31607,3.44129 4,4.20435 4,5L4,19C4,19.7957 4.31607,20.5587 4.87868,21.1213 5.44129,21.6839 6.20435,22 7,22L17,22C17.7957,22 18.5587,21.6839 19.1213,21.1213 19.6839,20.5587 20,19.7957 20,19L20,8C20,7.73478,19.8946,7.48043,19.7071,7.29289L14.7071,2.29289C14.5196,2.10536,14.2652,2,14,2L7,2z M15,9C14.4696,9 13.9609,8.78929 13.5858,8.41421 13.2107,8.03914 13,7.53043 13,7L13,4 7,4C6.73478,4 6.48043,4.10536 6.29289,4.29289 6.10536,4.48043 6,4.73478 6,5L6,19C6,19.2652 6.10536,19.5196 6.29289,19.7071 6.48043,19.8946 6.73478,20 7,20L17,20C17.2652,20 17.5196,19.8946 17.7071,19.7071 17.8946,19.5196 18,19.2652 18,19L18,9 15,9z M15,7L16.5858,7 15,5.41421 15,7z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="16" FontWeight="Bold">所有用户文件</TextBlock>
<TextBlock FontSize="14" Foreground="#a1a1aa" Margin="0,2,0,0">占用891.89MB的空间总数100103个</TextBlock>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Image Margin="0,0,8,0" Height="32" Width="32" VerticalAlignment="Top">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="White" Geometry="F0 M24,24z M0,0z M4.87868,2.87868C5.44129,2.31607,6.20435,2,7,2L14,2C14.2652,2,14.5196,2.10536,14.7071,2.29289L19.7071,7.29289C19.8946,7.48043,20,7.73478,20,8L20,19C20,19.7957 19.6839,20.5587 19.1213,21.1213 18.5587,21.6839 17.7957,22 17,22L7,22C6.20435,22 5.44129,21.6839 4.87868,21.1213 4.31607,20.5587 4,19.7957 4,19L4,5C4,4.20435,4.31607,3.44129,4.87868,2.87868z M13.5858,8.41421C13.9609,8.78929,14.4696,9,15,9L18,9 18,19C18,19.2652 17.8946,19.5196 17.7071,19.7071 17.5196,19.8946 17.2652,20 17,20L7,20C6.73478,20 6.48043,19.8946 6.29289,19.7071 6.10536,19.5196 6,19.2652 6,19L6,5C6,4.73478 6.10536,4.48043 6.29289,4.29289 6.48043,4.10536 6.73478,4 7,4L13,4 13,7C13,7.53043,13.2107,8.03914,13.5858,8.41421z M16.5858,7L15,7 15,5.41421 16.5858,7z M14,9.58594C13.3597,9.58594,12.7456,9.84029,12.2929,10.293L7.29289,15.293C7.10536,15.4806,7,15.7349,7,16.0002L7,18.0002C7,18.5524,7.44772,19.0002,8,19.0002L10,19.0002C10.2652,19.0002,10.5196,18.8948,10.7071,18.7073L15.7071,13.7073C16.1599,13.2545 16.4142,12.6404 16.4142,12.0002 16.4142,11.3599 16.1599,10.7458 15.7071,10.293 15.2544,9.84029 14.6403,9.58594 14,9.58594z M13.7071,11.7073C13.7848,11.6296 13.8901,11.5859 14,11.5859 14.1099,11.5859 14.2152,11.6296 14.2929,11.7073 14.3706,11.7849 14.4142,11.8903 14.4142,12.0002 14.4142,12.11 14.3706,12.2154 14.2929,12.293L9.58579,17.0002 9,17.0002 9,16.4144 13.7071,11.7073z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="16" FontWeight="Bold">自动保存的墨迹文件</TextBlock>
<TextBlock FontSize="14" Foreground="#a1a1aa" Margin="0,2,0,0">78%占用654.31MB的空间总数73920个</TextBlock>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Image Margin="0,0,8,0" Height="32" Width="32" VerticalAlignment="Top">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="White" Geometry="F0 M24,24z M0,0z M4.87868,2.87868C5.44129,2.31607,6.20435,2,7,2L14,2C14.2652,2,14.5196,2.10536,14.7071,2.29289L19.7071,7.29289C19.8946,7.48043,20,7.73478,20,8L20,19C20,19.7957 19.6839,20.5587 19.1213,21.1213 18.5587,21.6839 17.7957,22 17,22L7,22C6.20435,22 5.44129,21.6839 4.87868,21.1213 4.31607,20.5587 4,19.7957 4,19L4,5C4,4.20435,4.31607,3.44129,4.87868,2.87868z M13.5858,8.41421C13.9609,8.78929,14.4696,9,15,9L18,9 18,19C18,19.2652 17.8946,19.5196 17.7071,19.7071 17.5196,19.8946 17.2652,20 17,20L7,20C6.73478,20 6.48043,19.8946 6.29289,19.7071 6.10536,19.5196 6,19.2652 6,19L6,5C6,4.73478 6.10536,4.48043 6.29289,4.29289 6.48043,4.10536 6.73478,4 7,4L13,4 13,7C13,7.53043,13.2107,8.03914,13.5858,8.41421z M16.5858,7L15,7 15,5.41421 16.5858,7z M14,9.58594C13.3597,9.58594,12.7456,9.84029,12.2929,10.293L7.29289,15.293C7.10536,15.4806,7,15.7349,7,16.0002L7,18.0002C7,18.5524,7.44772,19.0002,8,19.0002L10,19.0002C10.2652,19.0002,10.5196,18.8948,10.7071,18.7073L15.7071,13.7073C16.1599,13.2545 16.4142,12.6404 16.4142,12.0002 16.4142,11.3599 16.1599,10.7458 15.7071,10.293 15.2544,9.84029 14.6403,9.58594 14,9.58594z M13.7071,11.7073C13.7848,11.6296 13.8901,11.5859 14,11.5859 14.1099,11.5859 14.2152,11.6296 14.2929,11.7073 14.3706,11.7849 14.4142,11.8903 14.4142,12.0002 14.4142,12.11 14.3706,12.2154 14.2929,12.293L9.58579,17.0002 9,17.0002 9,16.4144 13.7071,11.7073z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="16" FontWeight="Bold">手动保存的板书</TextBlock>
<TextBlock FontSize="14" Foreground="#a1a1aa" Margin="0,2,0,0">1%占用34.1MB的空间总数3个</TextBlock>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Image Margin="0,0,8,0" Height="32" Width="32" VerticalAlignment="Top">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="White" Geometry="F0 M24,24z M0,0z M4.58579,4.58579C4.96086,4.21071,5.46957,4,6,4L18,4C18.5304,4 19.0391,4.21071 19.4142,4.58579 19.7893,4.96086 20,5.46957 20,6L20,13.5856 18.7071,12.2927 18.6934,12.2793C18.0792,11.6883 17.3227,11.3301 16.5,11.3301 15.6773,11.3301 14.9208,11.6883 14.3066,12.2793L14.2929,12.2927 14,12.5856 11.7071,10.2927 11.6934,10.2793C11.0792,9.68828 10.3227,9.33008 9.5,9.33008 8.67726,9.33008 7.92076,9.68828 7.30661,10.2793L7.29289,10.2927 4,13.5856 4,6C4,5.46957,4.21071,4.96086,4.58579,4.58579z M15.4142,13.9998L15.6997,13.7144C16.011,13.4172 16.2882,13.3301 16.5,13.3301 16.7118,13.3301 16.989,13.4172 17.3003,13.7144L20,16.414 20,18C20,18.5304 19.7893,19.0391 19.4142,19.4142 19.0391,19.7893 18.5304,20 18,20L6,20C5.46957,20 4.96086,19.7893 4.58579,19.4142 4.21071,19.0391 4,18.5304 4,18L4,16.414 8.69967,11.7144C9.01097,11.4172 9.28816,11.3301 9.5,11.3301 9.71184,11.3301 9.98903,11.4172 10.3003,11.7144L13.2929,14.7069 15.2929,16.7069C15.6834,17.0975 16.3166,17.0975 16.7071,16.7069 17.0976,16.3164 17.0976,15.6832 16.7071,15.2927L15.4142,13.9998z M22,16.0008L22,18C22,19.0609 21.5786,20.0783 20.8284,20.8284 20.0783,21.5786 19.0609,22 18,22L6,22C4.93913,22 3.92172,21.5786 3.17157,20.8284 2.42143,20.0783 2,19.0609 2,18L2,16 2,15.9997 2,6C2,4.93913 2.42143,3.92172 3.17157,3.17157 3.92172,2.42143 4.93913,2 6,2L18,2C19.0609,2 20.0783,2.42143 20.8284,3.17157 21.5786,3.92172 22,4.93913 22,6L22,15.9988C22,15.9995,22,16.0002,22,16.0008z M15,7C14.4477,7 14,7.44772 14,8 14,8.55228 14.4477,9 15,9L15.01,9C15.5623,9 16.01,8.55228 16.01,8 16.01,7.44772 15.5623,7 15.01,7L15,7z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="16" FontWeight="Bold">截图文件</TextBlock>
<TextBlock FontSize="14" Foreground="#a1a1aa" Margin="0,2,0,0">0%</TextBlock>
</StackPanel>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Image Margin="0,0,8,0" Height="32" Width="32" VerticalAlignment="Top">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="White" Geometry="F0 M24,24z M0,0z M7,2C6.20435,2 5.44129,2.31607 4.87868,2.87868 4.31607,3.44129 4,4.20435 4,5L4,19C4,19.7957 4.31607,20.5587 4.87868,21.1213 5.44129,21.6839 6.20435,22 7,22L17,22C17.7957,22 18.5587,21.6839 19.1213,21.1213 19.6839,20.5587 20,19.7957 20,19L20,8C20,7.73478,19.8946,7.48043,19.7071,7.29289L14.7071,2.29289C14.5196,2.10536,14.2652,2,14,2L7,2z M15,9C14.4696,9 13.9609,8.78929 13.5858,8.41421 13.2107,8.03914 13,7.53043 13,7L13,4 7,4C6.73478,4 6.48043,4.10536 6.29289,4.29289 6.10536,4.48043 6,4.73478 6,5L6,19C6,19.2652 6.10536,19.5196 6.29289,19.7071 6.48043,19.8946 6.73478,20 7,20L17,20C17.2652,20 17.5196,19.8946 17.7071,19.7071 17.8946,19.5196 18,19.2652 18,19L18,9 15,9z M15,7L16.5858,7 15,5.41421 15,7z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="16" FontWeight="Bold">缓存文件</TextBlock>
<TextBlock FontSize="14" Foreground="#a1a1aa" Margin="0,2,0,0">0%</TextBlock>
</StackPanel>
</StackPanel>
<Button Content="清理缓存文件"/>
</ui:SimpleStackPanel>
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0"
Stroke="#3f3f46" StrokeThickness="1" Margin="0,4,0,4" />
<TextBlock Margin="0,0,0,8" Text="定时清理" FontWeight="Bold" Foreground="#fafafa"
FontSize="20" />
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left"> <ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="定期自动删除超过保存时间的墨迹、截图文件" <TextBlock Foreground="#fafafa" Text="定期自动删除超过保存时间的墨迹、截图文件"
VerticalAlignment="Center" FontSize="14" Margin="0,0,16,0" /> VerticalAlignment="Center" FontSize="14" Margin="0,0,16,0" />
@ -7554,10 +7717,8 @@
FontFamily="Microsoft YaHei UI" FontWeight="Bold" FontFamily="Microsoft YaHei UI" FontWeight="Bold"
Toggled="ToggleSwitchAutoDelSavedFiles_Toggled" /> Toggled="ToggleSwitchAutoDelSavedFiles_Toggled" />
</ui:SimpleStackPanel> </ui:SimpleStackPanel>
<TextBlock Text="# 请注意如果开启自动删除功能,将会删除自动保存目录下所有后缀名为 .icstk 和 .png 的文件!" <TextBlock Text="# 请注意如果开启自动删除功能,将会删除自动保存目录下所有后缀名为 .icstk、.iccink 和 .png 的文件!手动保存不受影响"
TextWrapping="Wrap" Foreground="#a1a1aa" /> TextWrapping="Wrap" Foreground="#a1a1aa" />
<Line HorizontalAlignment="Center" X1="0" Y1="0" X2="400" Y2="0" Stroke="#3f3f46"
StrokeThickness="1" Margin="0,4,0,4" />
<ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left"> <ui:SimpleStackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock Foreground="#fafafa" Text="保存时长" VerticalAlignment="Center" <TextBlock Foreground="#fafafa" Text="保存时长" VerticalAlignment="Center"
FontSize="14" Margin="0,0,16,0" /> FontSize="14" Margin="0,0,16,0" />

View File

@ -20,6 +20,26 @@ using Microsoft.Win32;
namespace Ink_Canvas { namespace Ink_Canvas {
public partial class MainWindow : Window { public partial class MainWindow : Window {
protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
{
base.OnPropertyChanged(e);
if (e.Property.Name == nameof(Topmost) && isLoaded) {
if (Topmost && Settings.Advanced.IsEnableForceFullScreen) {
Trace.WriteLine("Topmost true");
SetWindowPos(new WindowInteropHelper(this).Handle, new IntPtr(-1), 0, 0,
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width,
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height, 0x0040);
} else if (!Topmost && Settings.Advanced.IsEnableForceFullScreen) {
Trace.WriteLine("Topmost false");
SetWindowPos(new WindowInteropHelper(this).Handle, new IntPtr(-2), 0, 0,
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width,
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height, 0x0040);
}
}
}
#region Window Initialization #region Window Initialization
public MainWindow() { public MainWindow() {
@ -158,7 +178,7 @@ namespace Ink_Canvas {
#endregion Ink Canvas #endregion Ink Canvas
#region Definations and Loading #region Definitions and Loading
public static Settings Settings = new Settings(); public static Settings Settings = new Settings();
public static string settingsFileName = "Settings.json"; public static string settingsFileName = "Settings.json";
@ -170,6 +190,9 @@ namespace Ink_Canvas {
[DllImport("user32.dll")] [DllImport("user32.dll")]
static extern bool EnableMenuItem(IntPtr hMenu, uint uIDEnableItem, uint uEnable); static extern bool EnableMenuItem(IntPtr hMenu, uint uIDEnableItem, uint uEnable);
[DllImport("user32.dll", SetLastError = true)]
static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, UInt32 uFlags);
const uint MF_BYCOMMAND = 0x00000000; const uint MF_BYCOMMAND = 0x00000000;
const uint MF_GRAYED = 0x00000001; const uint MF_GRAYED = 0x00000001;
const uint SC_CLOSE = 0xF060; const uint SC_CLOSE = 0xF060;

View File

@ -44,18 +44,19 @@ namespace Ink_Canvas {
#region Board Background #region Board Background
private void ChangeBoardBackground(int id) { /// <summary>
BoardPagesSettingsList[CurrentWhiteboardIndex - 1].BackgroundColor = (BlackboardBackgroundColorEnum)id; /// 更新白板模式下每頁的背景顏色,可以直接根據當前的<c>CurrentWhiteboardIndex</c>獲取背景配置並更新,也可以自己修改當前的背景顏色
/// </summary>
/// <param name="id">要修改的背景顏色的ID傳入null會根據當前的<c>CurrentWhiteboardIndex</c>去讀取有關背景顏色的配置並更新</param>
private void UpdateBoardBackground(int? id) {
if (id != null) BoardPagesSettingsList[CurrentWhiteboardIndex - 1].BackgroundColor = (BlackboardBackgroundColorEnum)id;
var bgC = BoardPagesSettingsList[CurrentWhiteboardIndex - 1].BackgroundColor; var bgC = BoardPagesSettingsList[CurrentWhiteboardIndex - 1].BackgroundColor;
if (bgC == BlackboardBackgroundColorEnum.BlackBoardGreen if (bgC == BlackboardBackgroundColorEnum.BlackBoardGreen
|| bgC == BlackboardBackgroundColorEnum.BlueBlack || bgC == BlackboardBackgroundColorEnum.BlueBlack
|| bgC == BlackboardBackgroundColorEnum.GrayBlack || bgC == BlackboardBackgroundColorEnum.GrayBlack
|| bgC == BlackboardBackgroundColorEnum.RealBlack) || bgC == BlackboardBackgroundColorEnum.RealBlack) {
{
if (inkColor == 0) lastBoardInkColor = 5; if (inkColor == 0) lastBoardInkColor = 5;
} } else {
else
{
if (inkColor == 5) lastBoardInkColor = 0; if (inkColor == 5) lastBoardInkColor = 0;
} }
CheckColorTheme(true); CheckColorTheme(true);
@ -63,28 +64,27 @@ namespace Ink_Canvas {
} }
private void BoardBackgroundColor1Border_MouseUp(object sender, MouseButtonEventArgs e) { private void BoardBackgroundColor1Border_MouseUp(object sender, MouseButtonEventArgs e) {
ChangeBoardBackground(0); UpdateBoardBackground(0);
} }
private void BoardBackgroundColor2Border_MouseUp(object sender, MouseButtonEventArgs e) { private void BoardBackgroundColor2Border_MouseUp(object sender, MouseButtonEventArgs e) {
ChangeBoardBackground(1); UpdateBoardBackground(1);
} }
private void BoardBackgroundColor3Border_MouseUp(object sender, MouseButtonEventArgs e) { private void BoardBackgroundColor3Border_MouseUp(object sender, MouseButtonEventArgs e) {
ChangeBoardBackground(2); UpdateBoardBackground(2);
} }
private void BoardBackgroundColor4Border_MouseUp(object sender, MouseButtonEventArgs e) { private void BoardBackgroundColor4Border_MouseUp(object sender, MouseButtonEventArgs e) {
ChangeBoardBackground(3); UpdateBoardBackground(3);
} }
private void BoardBackgroundColor5Border_MouseUp(object sender, MouseButtonEventArgs e) { private void BoardBackgroundColor5Border_MouseUp(object sender, MouseButtonEventArgs e) {
ChangeBoardBackground(4); UpdateBoardBackground(4);
} }
private void BoardBackgroundColor6Border_MouseUp(object sender, MouseButtonEventArgs e) private void BoardBackgroundColor6Border_MouseUp(object sender, MouseButtonEventArgs e) {
{ UpdateBoardBackground(5);
ChangeBoardBackground(5);
} }
private void UpdateBoardBackgroundPanelDisplayStatus() { private void UpdateBoardBackgroundPanelDisplayStatus() {
@ -185,6 +185,7 @@ namespace Ink_Canvas {
RestoreStrokes(); RestoreStrokes();
UpdateIndexInfoDisplay(); UpdateIndexInfoDisplay();
UpdateBoardBackground(null);
} }
private void BtnWhiteBoardSwitchNext_Click(object sender, EventArgs e) { private void BtnWhiteBoardSwitchNext_Click(object sender, EventArgs e) {
@ -205,6 +206,7 @@ namespace Ink_Canvas {
RestoreStrokes(); RestoreStrokes();
UpdateIndexInfoDisplay(); UpdateIndexInfoDisplay();
UpdateBoardBackground(null);
} }
private void BtnWhiteBoardAdd_Click(object sender, EventArgs e) { private void BtnWhiteBoardAdd_Click(object sender, EventArgs e) {
@ -214,6 +216,11 @@ namespace Ink_Canvas {
SaveStrokes(); SaveStrokes();
ClearStrokes(true); ClearStrokes(true);
BoardPagesSettingsList.Insert(CurrentWhiteboardIndex, new BoardPageSettings() {
BackgroundColor = Settings.Canvas.UseDefaultBackgroundColorForEveryNewAddedBlackboardPage ? Settings.Canvas.BlackboardBackgroundColor : BoardPagesSettingsList[CurrentWhiteboardIndex-1].BackgroundColor,
BackgroundPattern = Settings.Canvas.UseDefaultBackgroundPatternForEveryNewAddedBlackboardPage ? Settings.Canvas.BlackboardBackgroundPattern : BoardPagesSettingsList[CurrentWhiteboardIndex - 1].BackgroundPattern,
});
WhiteboardTotalCount++; WhiteboardTotalCount++;
CurrentWhiteboardIndex++; CurrentWhiteboardIndex++;
@ -228,6 +235,8 @@ namespace Ink_Canvas {
if (BlackBoardLeftSidePageListView.Visibility == Visibility.Visible) { if (BlackBoardLeftSidePageListView.Visibility == Visibility.Visible) {
RefreshBlackBoardSidePageListView(); RefreshBlackBoardSidePageListView();
} }
UpdateBoardBackground(null);
} }
private void BtnWhiteBoardDelete_Click(object sender, RoutedEventArgs e) { private void BtnWhiteBoardDelete_Click(object sender, RoutedEventArgs e) {

View File

@ -740,9 +740,6 @@ namespace Ink_Canvas {
((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent); ((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent);
if (sender == Pen_Icon && lastBorderMouseDownObject != Pen_Icon) return; if (sender == Pen_Icon && lastBorderMouseDownObject != Pen_Icon) return;
FloatingbarSelectionBG.Visibility = Visibility.Visible;
System.Windows.Controls.Canvas.SetLeft(FloatingbarSelectionBG, 28);
if (Pen_Icon.Background == null || StackPanelCanvasControls.Visibility == Visibility.Collapsed) if (Pen_Icon.Background == null || StackPanelCanvasControls.Visibility == Visibility.Collapsed)
{ {
inkCanvas.EditingMode = InkCanvasEditingMode.Ink; inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
@ -847,8 +844,6 @@ namespace Ink_Canvas {
((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent); ((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent);
if (sender == SymbolIconSelect && lastBorderMouseDownObject != SymbolIconSelect) return; if (sender == SymbolIconSelect && lastBorderMouseDownObject != SymbolIconSelect) return;
FloatingbarSelectionBG.Visibility = Visibility.Visible;
System.Windows.Controls.Canvas.SetLeft(FloatingbarSelectionBG, 140);
BtnSelect_Click(null, null); BtnSelect_Click(null, null);
HideSubPanels("select"); HideSubPanels("select");
@ -864,9 +859,6 @@ namespace Ink_Canvas {
((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent); ((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent);
if (sender == Eraser_Icon && lastBorderMouseDownObject != Eraser_Icon) return; if (sender == Eraser_Icon && lastBorderMouseDownObject != Eraser_Icon) return;
FloatingbarSelectionBG.Visibility = Visibility.Visible;
System.Windows.Controls.Canvas.SetLeft(FloatingbarSelectionBG, 84);
forceEraser = true; forceEraser = true;
forcePointEraser = true; forcePointEraser = true;
if (Settings.Canvas.EraserShapeType == 0) if (Settings.Canvas.EraserShapeType == 0)
@ -966,9 +958,6 @@ namespace Ink_Canvas {
((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent); ((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent);
if (sender == EraserByStrokes_Icon && lastBorderMouseDownObject != EraserByStrokes_Icon) return; if (sender == EraserByStrokes_Icon && lastBorderMouseDownObject != EraserByStrokes_Icon) return;
FloatingbarSelectionBG.Visibility = Visibility.Visible;
System.Windows.Controls.Canvas.SetLeft(FloatingbarSelectionBG, 112);
forceEraser = true; forceEraser = true;
forcePointEraser = false; forcePointEraser = false;
@ -1010,11 +999,12 @@ namespace Ink_Canvas {
foreach (var iconElement in IconsArray) { foreach (var iconElement in IconsArray) {
var elem = (SimpleStackPanel)iconElement; var elem = (SimpleStackPanel)iconElement;
if (elem.Children[0] is Image) { if (elem.Children[0] is Image) {
((Image)elem.Children[0]).Margin = new Thickness(0, Settings.Appearance.FloatingBarButtonLabelVisibility ? 3 : 0, 0, 0); ((Image)elem.Children[0]).Margin = new Thickness(0, Settings.Appearance.FloatingBarButtonLabelVisibility ? 3 : 5, 0, 0);
((Image)elem.Children[0]).Height = Settings.Appearance.FloatingBarButtonLabelVisibility ? 17 : 15; ((Image)elem.Children[0]).Height = Settings.Appearance.FloatingBarButtonLabelVisibility ? 17 : 15;
} }
elem.Width = Settings.Appearance.FloatingBarButtonLabelVisibility ? 28 : 21; elem.Width = Settings.Appearance.FloatingBarButtonLabelVisibility ? 28 : 21;
elem.VerticalAlignment = Settings.Appearance.FloatingBarButtonLabelVisibility ? VerticalAlignment.Stretch : VerticalAlignment.Center; elem.Height = Settings.Appearance.FloatingBarButtonLabelVisibility ? 34 : 28;
FloatingbarSelectionBG.Height = Settings.Appearance.FloatingBarButtonLabelVisibility ? 34 : 26;
} }
BorderFloatingBarMoveControls.Width = barHeight; BorderFloatingBarMoveControls.Width = barHeight;
BorderFloatingBarMoveControls.Height = barHeight; BorderFloatingBarMoveControls.Height = barHeight;

View File

@ -19,6 +19,7 @@ using iNKORE.UI.WPF.Modern.Media.Animation;
using System.Security.Principal; using System.Security.Principal;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
using System.Threading;
namespace Ink_Canvas { namespace Ink_Canvas {
public partial class MainWindow : Window { public partial class MainWindow : Window {
@ -765,12 +766,14 @@ namespace Ink_Canvas {
SaveSettingsToFile(); SaveSettingsToFile();
} }
private void ToggleSwitchFloatingBarButtonLabelVisibility_Toggled(object sender, RoutedEventArgs e) { private async void ToggleSwitchFloatingBarButtonLabelVisibility_Toggled(object sender, RoutedEventArgs e) {
if (!isLoaded) return; if (!isLoaded) return;
Settings.Appearance.FloatingBarButtonLabelVisibility = ToggleSwitchFloatingBarButtonLabelVisibility.IsOn; Settings.Appearance.FloatingBarButtonLabelVisibility = ToggleSwitchFloatingBarButtonLabelVisibility.IsOn;
FloatingBarTextVisibilityBindingLikeAPieceOfShit.Visibility = Settings.Appearance.FloatingBarButtonLabelVisibility ? Visibility.Visible : Visibility.Collapsed; FloatingBarTextVisibilityBindingLikeAPieceOfShit.Visibility = Settings.Appearance.FloatingBarButtonLabelVisibility ? Visibility.Visible : Visibility.Collapsed;
UpdateFloatingBarIconsLayout(); UpdateFloatingBarIconsLayout();
await Task.Delay(1);
ViewboxFloatingBarMarginAnimation(60,true);
SaveSettingsToFile(); SaveSettingsToFile();
} }
@ -1944,95 +1947,54 @@ namespace Ink_Canvas {
public void UpdateSettingsIndexSidebarDisplayStatus() { public void UpdateSettingsIndexSidebarDisplayStatus() {
if (Math.Truncate(SettingsAboutGroupBox.MinHeight) != Math.Truncate(SettingsPanelScrollViewer.ActualHeight)) SettingsAboutGroupBox.MinHeight = SettingsPanelScrollViewer.ActualHeight; if (Math.Truncate(SettingsAboutGroupBox.MinHeight) != Math.Truncate(SettingsPanelScrollViewer.ActualHeight))
SettingsAboutGroupBox.MinHeight = SettingsPanelScrollViewer.ActualHeight;
SettingsStartupJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0); GroupBox[] settingsPaneGroupBoxes = new GroupBox[] {
SettingsStartupJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent); SettingsStartupGroupBox,
SettingsCanvasJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0); SettingsCanvasGroupBox,
SettingsCanvasJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent); SettingsGestureGroupBox,
SettingsGestureJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0); SettingsInkRecognitionGroupBox,
SettingsGestureJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent); SettingsAppearanceGroupBox,
SettingsInkRecognitionJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0); SettingsPPTGroupBox,
SettingsInkRecognitionJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent); SettingsAdvancedGroupBox,
SettingsAppearanceJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0); SettingsAutomationGroupBox,
SettingsAppearanceJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent); SettingsRandWindowGroupBox,
SettingsPPTJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0); SettingsAboutGroupBox
SettingsPPTJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent); };
SettingsAdvancedJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
SettingsAdvancedJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
SettingsAutomationJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
SettingsAutomationJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
SettingsRandWindowJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
SettingsRandWindowJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
SettingsAboutJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 0, 0);
SettingsAboutJumpToGroupBoxButton.Background = new SolidColorBrush(Colors.Transparent);
var SettingsStartupGroupBoxTransform = SettingsStartupGroupBox.TransformToVisual(SettingsPanelScrollViewer); Border[] jumpToBorders = new Border[] {
var SettingsStartupGroupBoxTopPosition = SettingsStartupGroupBoxTransform.Transform(new Point(0, 0)); SettingsStartupJumpToGroupBoxButton,
var SettingsStartupGroupBoxBottomPosition = SettingsStartupGroupBoxTransform.Transform(new Point(0, SettingsStartupGroupBox.ActualHeight)); SettingsCanvasJumpToGroupBoxButton,
SettingsGestureJumpToGroupBoxButton,
SettingsInkRecognitionJumpToGroupBoxButton,
SettingsAppearanceJumpToGroupBoxButton,
SettingsPPTJumpToGroupBoxButton,
SettingsAdvancedJumpToGroupBoxButton,
SettingsAutomationJumpToGroupBoxButton,
SettingsRandWindowJumpToGroupBoxButton,
SettingsAboutJumpToGroupBoxButton
};
var SettingsCanvasGroupBoxTransform = SettingsCanvasGroupBox.TransformToVisual(SettingsPanelScrollViewer); foreach (var jtb in jumpToBorders) {
var SettingsCanvasGroupBoxTopPosition = SettingsCanvasGroupBoxTransform.Transform(new Point(0, 0)); jtb.BorderThickness = new Thickness(0, 0, 0, 0);
var SettingsCanvasGroupBoxBottomPosition = SettingsCanvasGroupBoxTransform.Transform(new Point(0, SettingsCanvasGroupBox.ActualHeight)); jtb.Background = new SolidColorBrush(Colors.Transparent);
}
var SettingsGestureGroupBoxTransform = SettingsGestureGroupBox.TransformToVisual(SettingsPanelScrollViewer); foreach (var gbx in settingsPaneGroupBoxes) {
var SettingsGestureGroupBoxTopPosition = SettingsGestureGroupBoxTransform.Transform(new Point(0, 0)); var transform = gbx.TransformToVisual(SettingsPanelScrollViewer);
var SettingsGestureGroupBoxBottomPosition = SettingsGestureGroupBoxTransform.Transform(new Point(0, SettingsGestureGroupBox.ActualHeight)); var top = transform.Transform(new Point(0, 0));
var bottom = transform.Transform(new Point(0, gbx.ActualHeight));
var SettingsInkRecognitionGroupBoxTransform = SettingsInkRecognitionGroupBox.TransformToVisual(SettingsPanelScrollViewer); if (settingsPaneGroupBoxes.Length - Array.IndexOf(settingsPaneGroupBoxes, gbx) - 1 <= 4) {
var SettingsInkRecognitionGroupBoxTopPosition = SettingsInkRecognitionGroupBoxTransform.Transform(new Point(0, 0)); if (!(top.Y < SettingsPanelScrollViewer.ActualHeight * 0.9) || !(bottom.Y > 50)) continue;
var SettingsInkRecognitionGroupBoxBottomPosition = SettingsInkRecognitionGroupBoxTransform.Transform(new Point(0, SettingsInkRecognitionGroupBox.ActualHeight)); jumpToBorders[Array.IndexOf(settingsPaneGroupBoxes, gbx)].BorderThickness = new Thickness(0, 0, 4, 0);
jumpToBorders[Array.IndexOf(settingsPaneGroupBoxes, gbx)].Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
var SettingsAppearanceGroupBoxTransform = SettingsAppearanceGroupBox.TransformToVisual(SettingsPanelScrollViewer); break;
var SettingsAppearanceGroupBoxTopPosition = SettingsAppearanceGroupBoxTransform.Transform(new Point(0, 0)); } else if (top.Y < SettingsPanelScrollViewer.ActualHeight / 2 && bottom.Y > 50) {
var SettingsAppearanceGroupBoxBottomPosition = SettingsAppearanceGroupBoxTransform.Transform(new Point(0, SettingsAppearanceGroupBox.ActualHeight)); jumpToBorders[Array.IndexOf(settingsPaneGroupBoxes, gbx)].BorderThickness = new Thickness(0, 0, 4, 0);
jumpToBorders[Array.IndexOf(settingsPaneGroupBoxes, gbx)].Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
var SettingsPPTGroupBoxTransform = SettingsPPTGroupBox.TransformToVisual(SettingsPanelScrollViewer); break;
var SettingsPPTGroupBoxTopPosition = SettingsPPTGroupBoxTransform.Transform(new Point(0, 0)); }
var SettingsPPTGroupBoxBottomPosition = SettingsPPTGroupBoxTransform.Transform(new Point(0, SettingsPPTGroupBox.ActualHeight));
var SettingsAdvancedGroupBoxTransform = SettingsAdvancedGroupBox.TransformToVisual(SettingsPanelScrollViewer);
var SettingsAdvancedGroupBoxTopPosition = SettingsAdvancedGroupBoxTransform.Transform(new Point(0, 0));
var SettingsAdvancedGroupBoxBottomPosition = SettingsAdvancedGroupBoxTransform.Transform(new Point(0, SettingsAdvancedGroupBox.ActualHeight));
var SettingsAutomationGroupBoxTransform = SettingsAutomationGroupBox.TransformToVisual(SettingsPanelScrollViewer);
var SettingsAutomationGroupBoxTopPosition = SettingsAutomationGroupBoxTransform.Transform(new Point(0, 0));
var SettingsAutomationGroupBoxBottomPosition = SettingsAutomationGroupBoxTransform.Transform(new Point(0, SettingsAutomationGroupBox.ActualHeight));
var SettingsRandWindowGroupBoxTransform = SettingsRandWindowGroupBox.TransformToVisual(SettingsPanelScrollViewer);
var SettingsRandWindowGroupBoxTopPosition = SettingsRandWindowGroupBoxTransform.Transform(new Point(0, 0));
var SettingsRandWindowGroupBoxBottomPosition = SettingsRandWindowGroupBoxTransform.Transform(new Point(0, SettingsRandWindowGroupBox.ActualHeight));
if (SettingsStartupGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight /2 && SettingsStartupGroupBoxBottomPosition.Y > 50) {
SettingsStartupJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
SettingsStartupJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
} else if (SettingsCanvasGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight / 2 && SettingsCanvasGroupBoxBottomPosition.Y > 50) {
SettingsCanvasJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
SettingsCanvasJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
} else if (SettingsGestureGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight / 2 && SettingsGestureGroupBoxBottomPosition.Y > 50) {
SettingsGestureJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
SettingsGestureJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
} else if (SettingsInkRecognitionGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight / 2 && SettingsInkRecognitionGroupBoxBottomPosition.Y > 50) {
SettingsInkRecognitionJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
SettingsInkRecognitionJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
} else if (SettingsAppearanceGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight / 2 && SettingsAppearanceGroupBoxBottomPosition.Y > 50) {
SettingsAppearanceJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
SettingsAppearanceJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
} else if (SettingsPPTGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight / 2 && SettingsPPTGroupBoxBottomPosition.Y > 50) {
SettingsPPTJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
SettingsPPTJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
} else if (SettingsAdvancedGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight * 0.9 && SettingsAdvancedGroupBoxBottomPosition.Y > 50) {
SettingsAdvancedJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
SettingsAdvancedJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
} else if (SettingsAutomationGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight * 0.9 && SettingsAutomationGroupBoxBottomPosition.Y > 50) {
SettingsAutomationJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
SettingsAutomationJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
} else if (SettingsRandWindowGroupBoxTopPosition.Y < SettingsPanelScrollViewer.ActualHeight * 0.9 && SettingsRandWindowGroupBoxBottomPosition.Y > 50) {
SettingsRandWindowJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
SettingsRandWindowJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
} else {
SettingsAboutJumpToGroupBoxButton.BorderThickness = new Thickness(0, 0, 4, 0);
SettingsAboutJumpToGroupBoxButton.Background = new SolidColorBrush(Color.FromRgb(39, 39, 42));
} }
} }

View File

@ -0,0 +1,424 @@
<UserControl x:Class="Ink_Canvas.Popups.ColorPalette"
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:Ink_Canvas.Popups"
xmlns:modern="http://schemas.inkore.net/lib/ui/wpf/modern"
mc:Ignorable="d" Width="300" Height="450" UseLayoutRounding="True">
<UserControl.Resources>
<DrawingImage x:Key="CheckedLightIcon">
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="White" Geometry="F0 M24,24z M0,0z M20.7071,6.29289C21.0976,6.68342,21.0976,7.31658,20.7071,7.70711L10.7071,17.7071C10.3166,18.0976,9.68342,18.0976,9.29289,17.7071L4.29289,12.7071C3.90237,12.3166 3.90237,11.6834 4.29289,11.2929 4.68342,10.9024 5.31658,10.9024 5.70711,11.2929L10,15.5858 19.2929,6.29289C19.6834,5.90237,20.3166,5.90237,20.7071,6.29289z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
<DrawingImage x:Key="CheckedDarkIcon">
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#18181b" Geometry="F0 M24,24z M0,0z M20.7071,6.29289C21.0976,6.68342,21.0976,7.31658,20.7071,7.70711L10.7071,17.7071C10.3166,18.0976,9.68342,18.0976,9.29289,17.7071L4.29289,12.7071C3.90237,12.3166 3.90237,11.6834 4.29289,11.2929 4.68342,10.9024 5.31658,10.9024 5.70711,11.2929L10,15.5858 19.2929,6.29289C19.6834,5.90237,20.3166,5.90237,20.7071,6.29289z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
<ContextMenu x:Key="InkRecognitionContextMenu" Placement="Relative" Closed="InkRecognitionContextMenu_Closed" Opened="InkRecognitionContextMenu_Opened">
<MenuItem IsCheckable="True" Name="EnableRecog" Checked="InkRecognitionContextMenuItem_Checked" Unchecked="InkRecognitionContextMenuItem_Checked" Header="启用墨迹转形状"/>
<Separator/>
<MenuItem IsCheckable="True" Name="RecogTri" Checked="InkRecognitionContextMenuItem_Checked" Unchecked="InkRecognitionContextMenuItem_Checked" Header="识别三角形"/>
<MenuItem IsCheckable="True" Name="RecogQua" Checked="InkRecognitionContextMenuItem_Checked" Unchecked="InkRecognitionContextMenuItem_Checked" Header="识别四边形"/>
<MenuItem IsCheckable="True" Name="RecogEll" Checked="InkRecognitionContextMenuItem_Checked" Unchecked="InkRecognitionContextMenuItem_Checked" Header="识别椭圆"/>
<MenuItem IsCheckable="True" Name="RecogPlg" Checked="InkRecognitionContextMenuItem_Checked" Unchecked="InkRecognitionContextMenuItem_Checked" Header="识别多边形"/>
<Separator/>
<MenuItem IsCheckable="True" Name="Ft2Curve" Checked="InkRecognitionContextMenuItem_Checked" Unchecked="InkRecognitionContextMenuItem_Checked" Header="启用墨迹平滑"/>
</ContextMenu>
<ContextMenu x:Key="SimulatePressureContextMenu" Placement="Relative" Closed="SimulatePressureContextMenu_Closed" Opened="SimulatePressureContextMenu_Opened">
<MenuItem IsCheckable="True" Name="PointSP" Checked="SimulatePressureContextMenuItem_Checked" Unchecked="SimulatePressureContextMenuItem_Checked" Header="点集笔锋"/>
<MenuItem IsCheckable="True" Name="VelocitySP" Checked="SimulatePressureContextMenuItem_Checked" Unchecked="SimulatePressureContextMenuItem_Checked" Header="速度笔锋"/>
<MenuItem IsCheckable="True" Name="NoneSP" Checked="SimulatePressureContextMenuItem_Checked" Unchecked="SimulatePressureContextMenuItem_Checked" Header="强制硬件压感"/>
</ContextMenu>
<DrawingImage x:Key="SwitchOnImage">
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V20 H53 V0 H0 Z">
<GeometryDrawing Brush="#FFEBECF0">
<GeometryDrawing.Pen>
<Pen Brush="#FFC9CCD6" Thickness="1" StartLineCap="Flat" EndLineCap="Flat" LineJoin="Miter" />
</GeometryDrawing.Pen>
<GeometryDrawing.Geometry>
<RectangleGeometry RadiusX="2.5" RadiusY="2.5" Rect="0.5,0.5,52,19" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#FF208A3C" Geometry="F1 M53,20z M0,0z M1,3C1,1.89543,1.89543,1,3,1L35,1 35,19 3,19C1.89543,19,1,18.1046,1,17L1,3z" />
<GeometryDrawing Brush="#FFFFFFFF" Geometry="F1 M53,20z M0,0z M17.2513,10.2726C17.2513,11.282 17.0666,12.1499 16.6973,12.8762 16.328,13.5995 15.8217,14.1565 15.1785,14.5474 14.5383,14.9352 13.8105,15.1291 12.9949,15.1291 12.1762,15.1291 11.4453,14.9352 10.8021,14.5474 10.1619,14.1565 9.65718,13.598 9.28786,12.8716 8.91855,12.1453 8.73389,11.2789 8.73389,10.2726 8.73389,9.26308 8.91855,8.39672 9.28786,7.67347 9.65718,6.94715 10.1619,6.39009 10.8021,6.00231 11.4453,5.61145 12.1762,5.41602 12.9949,5.41602 13.8105,5.41602 14.5383,5.61145 15.1785,6.00231 15.8217,6.39009 16.328,6.94715 16.6973,7.67347 17.0666,8.39672 17.2513,9.26308 17.2513,10.2726z M15.8386,10.2726C15.8386,9.50314 15.714,8.85529 15.4647,8.32901 15.2185,7.79966 14.88,7.39956 14.4491,7.12873 14.0213,6.85482 13.5366,6.71786 12.9949,6.71786 12.4502,6.71786 11.9639,6.85482 11.5361,7.12873 11.1083,7.39956 10.7698,7.79966 10.5205,8.32901 10.2743,8.85529 10.1511,9.50314 10.1511,10.2726 10.1511,11.042 10.2743,11.6913 10.5205,12.2207 10.7698,12.747 11.1083,13.1471 11.5361,13.421 11.9639,13.6918 12.4502,13.8272 12.9949,13.8272 13.5366,13.8272 14.0213,13.6918 14.4491,13.421 14.88,13.1471 15.2185,12.747 15.4647,12.2207 15.714,11.6913 15.8386,11.042 15.8386,10.2726z" />
<GeometryDrawing Brush="#FFFFFFFF" Geometry="F1 M53,20z M0,0z M26.6608,5.54528L26.6608,14.9998 25.3497,14.9998 20.544,8.06587 20.4563,8.06587 20.4563,14.9998 19.0298,14.9998 19.0298,5.54528 20.3501,5.54528 25.1605,12.4885 25.2482,12.4885 25.2482,5.54528 26.6608,5.54528z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
<DrawingImage x:Key="SwitchOffImage">
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V20 H53 V0 H0 Z">
<GeometryDrawing Brush="#FFC9CCD6">
<GeometryDrawing.Geometry>
<RectangleGeometry RadiusX="3" RadiusY="3" Rect="0,0,53,20" />
</GeometryDrawing.Geometry>
</GeometryDrawing>
<GeometryDrawing Brush="#FFEBECF0" Geometry="F1 M53,20z M0,0z M18,1L50,1C51.1046,1,52,1.89543,52,3L52,17C52,18.1046,51.1046,19,50,19L18,19 18,1z" />
<GeometryDrawing Brush="#FF6C707E" Geometry="F1 M53,20z M0,0z M31.2513,10.2726C31.2513,11.282 31.0666,12.1499 30.6973,12.8762 30.328,13.5995 29.8217,14.1565 29.1785,14.5474 28.5383,14.9352 27.8105,15.1291 26.9949,15.1291 26.1762,15.1291 25.4453,14.9352 24.8021,14.5474 24.1619,14.1565 23.6572,13.598 23.2879,12.8716 22.9185,12.1453 22.7339,11.2789 22.7339,10.2726 22.7339,9.26308 22.9185,8.39672 23.2879,7.67347 23.6572,6.94715 24.1619,6.39009 24.8021,6.00231 25.4453,5.61145 26.1762,5.41602 26.9949,5.41602 27.8105,5.41602 28.5383,5.61145 29.1785,6.00231 29.8217,6.39009 30.328,6.94715 30.6973,7.67347 31.0666,8.39672 31.2513,9.26308 31.2513,10.2726z M29.8386,10.2726C29.8386,9.50314 29.714,8.85529 29.4647,8.32901 29.2185,7.79966 28.88,7.39956 28.4491,7.12873 28.0213,6.85482 27.5366,6.71786 26.9949,6.71786 26.4502,6.71786 25.9639,6.85482 25.5361,7.12873 25.1083,7.39956 24.7698,7.79966 24.5205,8.32901 24.2743,8.85529 24.1511,9.50314 24.1511,10.2726 24.1511,11.042 24.2743,11.6913 24.5205,12.2207 24.7698,12.747 25.1083,13.1471 25.5361,13.421 25.9639,13.6918 26.4502,13.8272 26.9949,13.8272 27.5366,13.8272 28.0213,13.6918 28.4491,13.421 28.88,13.1471 29.2185,12.747 29.4647,12.2207 29.714,11.6913 29.8386,11.042 29.8386,10.2726z" />
<GeometryDrawing Brush="#FF6C707E" Geometry="F1 M53,20z M0,0z M33.0298,14.9998L33.0298,5.54528 38.8927,5.54528 38.8927,6.77326 34.4563,6.77326 34.4563,9.65394 38.4726,9.65394 38.4726,10.8773 34.4563,10.8773 34.4563,14.9998 33.0298,14.9998z" />
<GeometryDrawing Brush="#FF6C707E" Geometry="F1 M53,20z M0,0z M40.647,14.9998L40.647,5.54528 46.5099,5.54528 46.5099,6.77326 42.0735,6.77326 42.0735,9.65394 46.0898,9.65394 46.0898,10.8773 42.0735,10.8773 42.0735,14.9998 40.647,14.9998z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</UserControl.Resources>
<Grid>
<Border Margin="8" Background="#f4f4f5" BorderBrush="#3b82f6" BorderThickness="2" CornerRadius="6">
<Border.Effect>
<DropShadowEffect BlurRadius="5" Opacity="0.2"/>
</Border.Effect>
<Grid>
<modern:SimpleStackPanel Spacing="4" Margin="8,0" Height="40" VerticalAlignment="Top" Orientation="Horizontal">
<Border x:Name="PenTabButton" VerticalAlignment="Bottom"
Background="#223b82f6" Height="34" Width="69"
CornerRadius="6" MouseDown="PenTabButton_MouseDown">
<Grid>
<modern:SimpleStackPanel
x:Name="PenTabButtonIndicator"
Visibility="Visible"
Orientation="Horizontal"
HorizontalAlignment="Center"
VerticalAlignment="Bottom">
<Border Width="32" Height="4"
Background="#2563eb" CornerRadius="2" />
</modern:SimpleStackPanel>
<modern:SimpleStackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,2">
<modern:SimpleStackPanel
VerticalAlignment="Center"
Orientation="Horizontal"
HorizontalAlignment="Center">
<Image Height="20" Width="20">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V16 H17 V0 H0 Z">
<GeometryDrawing x:Name="PenTabButtonIcon" Brush="#2563eb" Geometry="F1 M17,16z M0,0z M11,1L9,3 10.5,3C10.6326,3.00002,10.7598,3.05272,10.8535,3.14648L12.8379,5.13086C12.9317,5.22462,12.9844,5.35177,12.9844,5.48438L12.9844,7.07422 15.0586,5 15.0586,3.05859 13,1 11,1z M8,4L1,11 1,15 5.05859,15 11.9844,8.07422 11.9844,5.69141 10.293,4 8,4z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock
x:Name="PenTabButtonText"
Foreground="#2563eb"
FontWeight="Medium"
FontSize="14" TextAlignment="Center"
VerticalAlignment="Center"
Text="软笔" Margin="4,0,0,0" />
</modern:SimpleStackPanel>
</modern:SimpleStackPanel>
</Grid>
</Border>
<Border x:Name="HighlighterTabButton" VerticalAlignment="Bottom"
Background="#223b82f6" Height="34" Width="69"
CornerRadius="6" MouseDown="PenTabButton_MouseDown">
<Grid>
<modern:SimpleStackPanel
x:Name="HighlighterTabButtonIndicator"
Visibility="Visible"
Orientation="Horizontal"
HorizontalAlignment="Center"
VerticalAlignment="Bottom">
<Border Width="32" Height="4"
Background="#2563eb" CornerRadius="2" />
</modern:SimpleStackPanel>
<modern:SimpleStackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,2">
<modern:SimpleStackPanel
VerticalAlignment="Center"
Orientation="Horizontal"
HorizontalAlignment="Center">
<Image Height="20" Width="20">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V16 H16 V0 H0 Z">
<GeometryDrawing x:Name="HighlighterTabButtonIcon" Brush="#2563eb" Geometry="F1 M16,16z M0,0z M9.51569,2.48132L3.0113,8.98571 3.0113,11.9877 0.00927734,14.9898 4.01198,14.9898 5.01265,13.9891 8.01468,13.9891 14.5191,7.4847C18.5218,3.482,13.5184,-1.52138,9.51569,2.48132z M4.01198,9.98639L7.01401,12.9884 5.01265,12.9884 4.01198,11.9877 4.01198,9.98639z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock
x:Name="HighlighterTabButtonText"
Foreground="#2563eb"
FontWeight="Medium"
FontSize="14" TextAlignment="Center"
VerticalAlignment="Center"
Text="荧光" Margin="4,0,0,0" />
</modern:SimpleStackPanel>
</modern:SimpleStackPanel>
</Grid>
</Border>
<Border x:Name="LaserPenTabButton" VerticalAlignment="Bottom"
Background="#223b82f6" Height="34" Width="69"
CornerRadius="6" MouseDown="PenTabButton_MouseDown">
<Grid>
<modern:SimpleStackPanel
x:Name="LaserPenTabButtonIndicator"
Visibility="Visible"
Orientation="Horizontal"
HorizontalAlignment="Center"
VerticalAlignment="Bottom">
<Border Width="32" Height="4"
Background="#2563eb" CornerRadius="2" />
</modern:SimpleStackPanel>
<modern:SimpleStackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,2">
<modern:SimpleStackPanel
VerticalAlignment="Center"
Orientation="Horizontal"
HorizontalAlignment="Center">
<Image Height="20" Width="20">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V16 H16 V0 H0 Z">
<GeometryDrawing x:Name="LaserPenTabButtonIcon" Brush="#2563eb" Geometry="F1 M16,16z M0,0z M5.97371,1L3.96258,3.16821 1.12402,2.65676 2.46477,5.33641 1.12402,8.0179 3.96258,7.50645 5.97371,9.67465 6.38833,6.67716 8.97122,5.33641 6.38833,3.9975 5.97371,1z M8.32092,7.5101C8.13488,7.51015 7.95306,7.56569 7.79874,7.6696 7.64442,7.77352 7.52459,7.9211 7.45458,8.09347 7.38457,8.26585 7.36757,8.45519 7.40573,8.63728 7.44389,8.81937 7.53548,8.98594 7.66881,9.1157L13.2656,14.7125C13.3518,14.8022 13.455,14.8739 13.5692,14.9233 13.6834,14.9726 13.8064,14.9987 13.9308,15 14.0552,15.0012 14.1786,14.9776 14.2938,14.9306 14.409,14.8836 14.5137,14.814 14.6016,14.7261 14.6896,14.6381 14.7592,14.5334 14.8062,14.4182 14.8532,14.303 14.8768,14.1796 14.8755,14.0552 14.8743,13.9308 14.8482,13.8079 14.7989,13.6936 14.7495,13.5794 14.6778,13.4762 14.5881,13.39L8.9931,7.79323C8.90573,7.70341 8.80121,7.63207 8.68574,7.58344 8.57027,7.5348 8.44622,7.50986 8.32092,7.5101z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock
x:Name="LaserPenTabButtonText"
Foreground="#2563eb"
FontWeight="Medium"
FontSize="14" TextAlignment="Center"
VerticalAlignment="Center"
Text="激光" Margin="4,0,0,0" />
</modern:SimpleStackPanel>
</modern:SimpleStackPanel>
</Grid>
</Border>
</modern:SimpleStackPanel>
<Border Height="34" Width="34" CornerRadius="6" Background="#22dc2626" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,6,8,0">
<Image Height="24" Width="24">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#dc2626" Geometry="F0 M24,24z M0,0z M18.7071,6.70711C19.0976,6.31658 19.0976,5.68342 18.7071,5.29289 18.3166,4.90237 17.6834,4.90237 17.2929,5.29289L12,10.5858 6.70711,5.29289C6.31658,4.90237 5.68342,4.90237 5.29289,5.29289 4.90237,5.68342 4.90237,6.31658 5.29289,6.70711L10.5858,12 5.29289,17.2929C4.90237,17.6834 4.90237,18.3166 5.29289,18.7071 5.68342,19.0976 6.31658,19.0976 6.70711,18.7071L12,13.4142 17.2929,18.7071C17.6834,19.0976 18.3166,19.0976 18.7071,18.7071 19.0976,18.3166 19.0976,17.6834 18.7071,17.2929L13.4142,12 18.7071,6.70711z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
</Border>
<Grid Margin="0,40,0,0" modern:ThemeManager.RequestedTheme="Light">
<!--main menu-->
<Border Margin="6" CornerRadius="6" Background="#fafafa" BorderBrush="#d4d4d8" BorderThickness="1">
<Grid>
<modern:SimpleStackPanel Orientation="Vertical" Spacing="6">
<Grid>
<TextBlock FontSize="18" FontWeight="Bold" VerticalAlignment="Bottom" Foreground="#27272a" Margin="16,12,10,2" Text="墨迹粗细"></TextBlock>
<TextBlock HorizontalAlignment="Right" FontSize="12" VerticalAlignment="Bottom" Foreground="#52525b" Text="12pt 非常粗" Margin="0,0,16,3"></TextBlock>
</Grid>
<Grid Margin="14,0,14,0">
<Button Padding="3" HorizontalAlignment="Left">
<Image Height="19" Width="19">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#FF000000" Geometry="F0 M24,24z M0,0z M4,12C4,11.4477,4.44772,11,5,11L19,11C19.5523,11 20,11.4477 20,12 20,12.5523 19.5523,13 19,13L5,13C4.44772,13,4,12.5523,4,12z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
</Button>
<Slider x:Name="HighlighterWidthSlider" Minimum="15"
Maximum="45" Width="172" Margin="0,-3,0,-3"
FontFamily="Microsoft YaHei UI" FontSize="20" VerticalAlignment="Center"
IsSnapToTickEnabled="True" Value="20" HorizontalAlignment="Center"
TickFrequency="1" TickPlacement="None"/>
<Button Padding="3" HorizontalAlignment="Right">
<Image Height="19" Width="19">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#FF000000" Geometry="F0 M24,24z M0,0z M13,5C13,4.44772 12.5523,4 12,4 11.4477,4 11,4.44772 11,5L11,11 5,11C4.44772,11 4,11.4477 4,12 4,12.5523 4.44772,13 5,13L11,13 11,19C11,19.5523 11.4477,20 12,20 12.5523,20 13,19.5523 13,19L13,13 19,13C19.5523,13 20,12.5523 20,12 20,11.4477 19.5523,11 19,11L13,11 13,5z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
</Button>
</Grid>
<Line X1="0" Y1="0" X2="240" Y2="0" Margin="0,2" HorizontalAlignment="Center" Stroke="#a1a1aa"/>
<Grid Margin="14,0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Height="96" Background="#f4f4f5" BorderBrush="#d4d4d8" CornerRadius="3" BorderThickness="1" Margin="0,0,3,0">
<Grid>
<modern:SimpleStackPanel Spacing="2" Orientation="Vertical" VerticalAlignment="Center">
<Image Height="28" Width="28">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V16 H16 V0 H0 Z">
<GeometryDrawing Brush="#27272a" Geometry="F1 M16,16z M0,0z M12.4565,1C12.0615,1.00001 11.6788,1.13756 11.3742,1.38903 11.0695,1.6405 10.8619,1.9902 10.7871,2.37806L4.21558,3.57272C4.05651,3.32218 3.83674,3.11586 3.57665,2.97293 3.31656,2.83 3.02459,2.7551 2.72782,2.75514 2.26051,2.75514 1.81234,2.94078 1.4819,3.27122 1.15146,3.60166 0.965821,4.04983 0.96582,4.51714 0.965884,4.8698 1.07177,5.2143 1.26978,5.50612 1.46779,5.79794 1.74882,6.02365 2.0765,6.15402L2.0765,11.6474C1.74963,11.7734 1.46858,11.9954 1.27033,12.2842 1.07208,12.573 0.965914,12.9151 0.96582,13.2654 0.965821,13.7255 1.14857,14.1667 1.47387,14.492 1.79916,14.8173 2.24036,15 2.70039,15 3.16043,15 3.60163,14.8173 3.92692,14.492 4.25222,14.1667 4.43497,13.7255 4.43497,13.2654 4.4343,13.1024 4.41064,12.9402 4.36469,12.7838L7.12253,10.487C7.39871,10.6501 7.71365,10.7359 8.03438,10.7356 8.485,10.7354 8.91898,10.5652 9.24961,10.2591L11.6098,11.4383C11.6076,11.4737 11.6064,11.5091 11.6064,11.5446 11.6064,11.7697 11.6507,11.9925 11.7368,12.2005 11.823,12.4084 11.9492,12.5974 12.1084,12.7565 12.2676,12.9157 12.4565,13.042 12.6645,13.1281 12.8724,13.2142 13.0953,13.2586 13.3204,13.2586 13.5455,13.2586 13.7684,13.2142 13.9763,13.1281 14.1843,13.042 14.3732,12.9157 14.5324,12.7565 14.6915,12.5974 14.8178,12.4084 14.9039,12.2005 14.9901,11.9925 15.0344,11.7697 15.0344,11.5446 15.0341,11.1676 14.9094,10.8012 14.6798,10.5022 14.4502,10.2032 14.1284,9.98819 13.7643,9.89055L13.197,4.22919C13.4844,4.09016 13.7268,3.87305 13.8966,3.60266 14.0663,3.33228 14.1565,3.01955 14.1568,2.70029 14.1568,2.24935 13.9777,1.81689 13.6588,1.49803 13.3399,1.17916 12.9075,1 12.4565,1z M11.0579,3.66528C11.2593,3.95732,11.5469,4.17907,11.8806,4.29946L12.4582,10.0637C12.3625,10.1194,12.2724,10.1842,12.1891,10.2573L9.81866,9.07125C9.82185,9.02962 9.82357,8.98789 9.82384,8.94613 9.82384,8.71114 9.77755,8.47844 9.68763,8.26133 9.5977,8.04423 9.4659,7.84698 9.29973,7.68082 9.13357,7.51466 8.9363,7.38285 8.7192,7.29292 8.5021,7.20299 8.26941,7.15671 8.03441,7.15671 7.79942,7.1567 7.56673,7.20299 7.34962,7.29292 7.13251,7.38284 6.93525,7.51466 6.76908,7.68082 6.60291,7.84698 6.4711,8.04423 6.38117,8.26133 6.29124,8.47844 6.24496,8.71114 6.24496,8.94613 6.24475,9.11487 6.26841,9.28279 6.31523,9.44491L3.54711,11.752C3.497,11.7237,3.44552,11.698,3.39285,11.6748L3.39285,6.14887C3.66164,6.03912 3.89914,5.86466 4.08423,5.64099 4.26933,5.41732 4.39629,5.15137 4.45382,4.8668L11.0579,3.66528z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" Foreground="#27272a">墨迹纠正</TextBlock>
<Button Name="InkRecognitionToggleSwitchButton" Click="InkRecognitionToggleSwitchButton_Clicked" Style="{x:Null}" ClipToBounds="False" BorderBrush="Transparent" BorderThickness="0" Padding="0" Background="Transparent" HorizontalAlignment="Center" Margin="0,6,0,0">
<Image Name="InkRecognitionToggleSwitchImage" Height="20" Source="{StaticResource SwitchOnImage}"/>
</Button>
</modern:SimpleStackPanel>
<Border Name="InkRecognitionMoreButton" MouseDown="InkRecognitionMoreButton_MouseDown" Height="26" Width="26" CornerRadius="3" Background="#2227272a" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,4,4,0">
<Image Height="24" Width="24">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#18181b" Geometry="F1 M24,24z M0,0z M9,6.00024C9,5.14824,9.986,4.70324,10.623,5.21724L10.707,5.29324 16.707,11.2932C16.8792,11.4654 16.9826,11.6945 16.9979,11.9376 17.0132,12.1806 16.9393,12.4208 16.79,12.6132L16.707,12.7072 10.707,18.7072 10.613,18.7902 10.536,18.8442 10.44,18.8982 10.404,18.9152 10.337,18.9422 10.229,18.9742 10.176,18.9842 10.116,18.9942 10.059,18.9982 10,19.0002 9.941,18.9982 9.883,18.9932 9.823,18.9842 9.771,18.9742 9.663,18.9422 9.596,18.9152 9.464,18.8452 9.374,18.7802 9.293,18.7072 9.21,18.6132 9.156,18.5362 9.102,18.4402 9.085,18.4042 9.058,18.3372 9.026,18.2292 9.016,18.1762 9.006,18.1162 9.002,18.0592 9,6.00024z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
</Border>
</Grid>
</Border>
<Border Grid.Column="1" Height="96" Background="#f4f4f5" BorderBrush="#d4d4d8" CornerRadius="3" BorderThickness="1" Margin="3,0,0,0">
<Grid>
<modern:SimpleStackPanel Spacing="2" Orientation="Vertical" VerticalAlignment="Center">
<Image Height="28" Width="28">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V16 H16 V0 H0 Z">
<GeometryDrawing Brush="#27272a" Geometry="F0 M16,16z M0,0z M4.80227,1.875C6.00275,1.15471 7.13561,1 7.13561,1 4.41946,3.625 4.07311,7.125 4.51061,11.5 2.76061,11.9375 3.63561,14.125 3.63561,14.125L2.76061,15C2.76061,15 2.37775,14.125 2.29576,12.375 2.29576,12.375 0.709825,11.582 1.01061,8 1.01061,6.6694 1.8856,3.625 4.80227,1.875z M8.01047,7.61719C8.01047,7.34773,8.40072,7.125,8.88547,7.125L12.3855,7.125C12.8702,7.125,13.2605,7.34773,13.2605,7.61719L13.2605,8.38281C13.2605,8.65227,12.8702,8.875,12.3855,8.875L14.1355,8.875C14.6181,8.875,15.1274,9.33921,15.0105,9.88672L14.1355,13.9883C14.0185,14.5358,13.7431,15,13.2605,15L8.01047,15C7.52783,15,7.2524,14.5358,7.13547,13.9883L6.28781,9.88672C6.17087,9.33921,6.65281,8.875,7.13547,8.875L8.88547,8.875C8.40072,8.875,8.01047,8.65227,8.01047,8.38281L8.01047,7.61719z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock FontSize="16" FontWeight="Bold" HorizontalAlignment="Center" Foreground="#27272a">模拟笔锋</TextBlock>
<Button Name="SimulatePressureToggleSwitchButton" Click="SimulatePressureToggleSwitchButton_Clicked" Style="{x:Null}" ClipToBounds="False" BorderBrush="Transparent" BorderThickness="0" Padding="0" Background="Transparent" HorizontalAlignment="Center" Margin="0,6,0,0">
<Image Name="SimulatePressureToggleSwitchImage" Height="20" Source="{StaticResource SwitchOnImage}"/>
</Button>
</modern:SimpleStackPanel>
<Border Name="SimulatePressureMoreButton" MouseDown="SimulatePressureMoreButton_MouseDown" Height="26" Width="26" CornerRadius="3" Background="#2227272a" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="0,4,4,0">
<Image Height="24" Width="24">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#18181b" Geometry="F1 M24,24z M0,0z M9,6.00024C9,5.14824,9.986,4.70324,10.623,5.21724L10.707,5.29324 16.707,11.2932C16.8792,11.4654 16.9826,11.6945 16.9979,11.9376 17.0132,12.1806 16.9393,12.4208 16.79,12.6132L16.707,12.7072 10.707,18.7072 10.613,18.7902 10.536,18.8442 10.44,18.8982 10.404,18.9152 10.337,18.9422 10.229,18.9742 10.176,18.9842 10.116,18.9942 10.059,18.9982 10,19.0002 9.941,18.9982 9.883,18.9932 9.823,18.9842 9.771,18.9742 9.663,18.9422 9.596,18.9152 9.464,18.8452 9.374,18.7802 9.293,18.7072 9.21,18.6132 9.156,18.5362 9.102,18.4402 9.085,18.4042 9.058,18.3372 9.026,18.2292 9.016,18.1762 9.006,18.1162 9.002,18.0592 9,6.00024z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
</Border>
</Grid>
</Border>
</Grid>
<Line X1="0" Y1="0" X2="240" Y2="0" Margin="0,2" HorizontalAlignment="Center" Stroke="#a1a1aa"/>
<Grid Margin="10,0,10,0" >
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Black" Grid.Row="0" Grid.Column="0" Margin="2" CornerRadius="3" Background="#09090b" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="White" Grid.Row="0" Grid.Column="1" Margin="2" CornerRadius="3" Background="#fafafa" BorderBrush="#a1a1aa" BorderThickness="1" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Red" Grid.Row="0" Grid.Column="2" Margin="2" CornerRadius="3" Background="#dc2626" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Orange" Grid.Row="0" Grid.Column="3" Margin="2" CornerRadius="3" Background="#ea580c" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Yellow" Grid.Row="0" Grid.Column="4" Margin="2" CornerRadius="3" Background="#facc15" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Lime" Grid.Row="1" Grid.Column="0" Margin="2,6,2,2" CornerRadius="3" Background="#65a30d" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Green" Grid.Row="1" Grid.Column="1" Margin="2,6,2,2" CornerRadius="3" Background="#16a34a" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Teal" Grid.Row="1" Grid.Column="2" Margin="2,6,2,2" CornerRadius="3" Background="#0d9488" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Cyan" Grid.Row="1" Grid.Column="3" Margin="2,6,2,2" CornerRadius="3" Background="#0284c7" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Blue" Grid.Row="1" Grid.Column="4" Margin="2,6,2,2" CornerRadius="3" Background="#2563eb" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Indigo" Grid.Row="2" Grid.Column="0" Margin="2,6,2,2" CornerRadius="3" Background="#4f46e5" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Purple" Grid.Row="2" Grid.Column="1" Margin="2,6,2,2" CornerRadius="3" Background="#7c3aed" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Fuchsia" Grid.Row="2" Grid.Column="2" Margin="2,6,2,2" CornerRadius="3" Background="#c026d3" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Pink" Grid.Row="2" Grid.Column="3" Margin="2,6,2,2" CornerRadius="3" Background="#db2777" Width="42" Height="36"></Border>
<Border MouseDown="ColorButton_MouseDown" MouseUp="ColorButton_MouseUp" MouseLeave="ColorButton_MouseLeave" Name="Rose" Grid.Row="2" Grid.Column="4" Margin="2,6,2,2" CornerRadius="3" Background="#e11d48" Width="42" Height="36"></Border>
</Grid>
<Grid Margin="12,0">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" HorizontalAlignment="Stretch" Margin="0,0,3,0">
<modern:SimpleStackPanel Orientation="Horizontal" Spacing="4">
<Image Height="19" Width="19">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#18181b" Geometry="F0 M24,24z M0,0z M21.9176,16.6399C21.8676,16.5199,21.7976,16.4099,21.6976,16.3099L18.6976,13.3099C18.3076,12.9199 17.6776,12.9199 17.2876,13.3099 16.8976,13.6999 16.8976,14.3299 17.2876,14.7199L18.5776,16.0099 15.9876,16.0099C14.9276,16.0099 13.9076,15.5899 13.1576,14.8399 12.4076,14.0899 11.9876,13.0699 11.9876,12.0099 11.9876,10.9499 12.4076,9.92995 13.1576,9.17995 13.9076,8.42995 14.9276,8.00995 15.9876,8.00995L18.5776,8.00995 17.2876,9.29995C16.8976,9.68995 16.8976,10.3199 17.2876,10.7099 17.6776,11.0999 18.3076,11.0999 18.6976,10.7099L21.6976,7.70995C21.7876,7.61995 21.8676,7.50995 21.9176,7.38995 22.0176,7.14995 22.0176,6.86995 21.9176,6.62995 21.8676,6.50995 21.7976,6.39995 21.6976,6.29995L18.6976,3.29995C18.3076,2.90995 17.6776,2.90995 17.2876,3.29995 16.8976,3.68995 16.8976,4.31995 17.2876,4.70995L18.5776,5.99995 15.9876,5.99995C14.3976,5.99995 12.8676,6.62995 11.7476,7.75995 11.4576,8.04995 11.2076,8.35995 10.9876,8.68995 10.7676,8.35995 10.5176,8.04995 10.2276,7.75995 9.09756,6.62995 7.57756,5.99995 5.98756,5.99995L2.99756,5.99995C2.44756,5.99995 1.99756,6.44995 1.99756,6.99995 1.99756,7.54995 2.44756,7.99995 2.99756,7.99995L5.99756,7.99995C7.05756,7.99995 8.07756,8.41995 8.82756,9.16995 9.57756,9.91995 9.99756,10.9399 9.99756,11.9999 9.99756,13.0599 9.57756,14.0799 8.82756,14.8299 8.07756,15.5799 7.05756,15.9999 5.99756,15.9999L2.99756,15.9999C2.44756,15.9999 1.99756,16.4499 1.99756,16.9999 1.99756,17.5499 2.44756,17.9999 2.99756,17.9999L5.99756,17.9999C7.58756,17.9999 9.11756,17.3699 10.2376,16.2399 10.5276,15.9499 10.7776,15.6399 10.9976,15.3099 11.2176,15.6399 11.4676,15.9499 11.7576,16.2399 12.8876,17.3699 14.4076,17.9999 15.9976,17.9999L18.5876,17.9999 17.2976,19.2899C16.9076,19.6799 16.9076,20.3099 17.2976,20.6999 17.6876,21.0899 18.3176,21.0899 18.7076,20.6999L21.7076,17.6999C21.7976,17.6099 21.8776,17.4999 21.9276,17.3699 22.0276,17.1299 22.0276,16.8499 21.9276,16.6099L21.9176,16.6399z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock Text="随机" VerticalAlignment="Center"></TextBlock>
</modern:SimpleStackPanel>
</Button>
<Button Grid.Column="1" HorizontalAlignment="Stretch" Margin="3,0,3,0">
<modern:SimpleStackPanel Orientation="Horizontal" Spacing="4">
<Image Height="19" Width="19">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#18181b" Geometry="F0 M24,24z M0,0z M6.34315,6.34315C7.84344,4.84285 9.87827,4 12,4 16.5317,4 20,7.24178 20,11 20,11.7543 19.6636,12.5066 19.0177,13.0805 18.3676,13.6582 17.463,14 16.5,14L14.0073,14C13.3411,13.9912 12.6909,14.2044 12.1593,14.6061 11.6253,15.0096 11.2415,15.5801 11.0691,16.2268 10.8966,16.8735 10.9454,17.5592 11.2076,18.175 11.447,18.7374 11.8519,19.2118 12.3664,19.5366 12.3885,19.5691 12.4042,19.6058 12.4122,19.6447 12.4249,19.7061 12.418,19.77 12.3926,19.8272 12.3671,19.8845 12.3243,19.9324 12.2702,19.9641 12.2162,19.9959 12.1535,20.0099 12.0911,20.0042 12.0608,20.0014 12.0304,20 12,20 9.87827,20 7.84344,19.1571 6.34315,17.6569 4.84285,16.1566 4,14.1217 4,12 4,9.87827 4.84285,7.84344 6.34315,6.34315z M12,2C9.34784,2 6.8043,3.05357 4.92893,4.92893 3.05357,6.8043 2,9.34784 2,12 2,14.6522 3.05357,17.1957 4.92893,19.0711 6.79478,20.9369 9.32205,21.9893 11.9596,21.9999 12.4214,22.0319 12.8826,21.9237 13.2825,21.6891 13.697,21.4458 14.025,21.0788 14.2202,20.6395 14.4154,20.2003 14.4681,19.7109 14.3709,19.2402 14.2737,18.7695 14.0314,18.341 13.6781,18.0151 13.6192,17.9607 13.554,17.9137 13.4839,17.8749 13.2886,17.7669 13.1351,17.5968 13.0477,17.3915 12.9603,17.1862 12.9441,16.9576 13.0015,16.7421 13.059,16.5265 13.1869,16.3364 13.3649,16.2019 13.543,16.0674 13.7608,15.9963 13.9839,15.9999L14,16 16.5,16C17.923,16 19.3084,15.4978 20.3463,14.5755 21.3884,13.6494 22,12.3657 22,11 22,5.92222 17.4083,2 12,2z M8.5,8.5C7.96957,8.5 7.46086,8.71071 7.08579,9.08579 6.71071,9.46086 6.5,9.96957 6.5,10.5 6.5,11.0304 6.71071,11.5391 7.08579,11.9142 7.46086,12.2893 7.96957,12.5 8.5,12.5 9.03043,12.5 9.53914,12.2893 9.91421,11.9142 10.2893,11.5391 10.5,11.0304 10.5,10.5 10.5,9.96957 10.2893,9.46086 9.91421,9.08579 9.53914,8.71071 9.03043,8.5 8.5,8.5z M11.0858,6.08579C11.4609,5.71071 11.9696,5.5 12.5,5.5 13.0304,5.5 13.5391,5.71071 13.9142,6.08579 14.2893,6.46086 14.5,6.96957 14.5,7.5 14.5,8.03043 14.2893,8.53914 13.9142,8.91421 13.5391,9.28929 13.0304,9.5 12.5,9.5 11.9696,9.5 11.4609,9.28929 11.0858,8.91421 10.7107,8.53914 10.5,8.03043 10.5,7.5 10.5,6.96957 10.7107,6.46086 11.0858,6.08579z M16.5,8.5C15.9696,8.5 15.4609,8.71071 15.0858,9.08579 14.7107,9.46086 14.5,9.96957 14.5,10.5 14.5,11.0304 14.7107,11.5391 15.0858,11.9142 15.4609,12.2893 15.9696,12.5 16.5,12.5 17.0304,12.5 17.5391,12.2893 17.9142,11.9142 18.2893,11.5391 18.5,11.0304 18.5,10.5 18.5,9.96957 18.2893,9.46086 17.9142,9.08579 17.5391,8.71071 17.0304,8.5 16.5,8.5z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock Text="自定" VerticalAlignment="Center"></TextBlock>
</modern:SimpleStackPanel>
</Button>
<Button Grid.Column="2" HorizontalAlignment="Stretch" Margin="3,0,0,0">
<modern:SimpleStackPanel Orientation="Horizontal" Spacing="4">
<Image Height="19" Width="19">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#18181b" Geometry="F0 M24,24z M0,0z M8.17317,2.7612C9.38642,2.25866 10.6868,2 12,2 13.3132,2 14.6136,2.25866 15.8268,2.7612 17.0401,3.26375 18.1425,4.00035 19.0711,4.92893 19.9997,5.85752 20.7362,6.95991 21.2388,8.17317 21.7413,9.38642 22,10.6868 22,12 22,13.3132 21.7413,14.6136 21.2388,15.8268 20.7362,17.0401 19.9997,18.1425 19.0711,19.0711 18.1425,19.9997 17.0401,20.7362 15.8268,21.2388 14.6136,21.7413 13.3132,22 12,22 10.6868,22 9.38642,21.7413 8.17317,21.2388 6.95991,20.7362 5.85752,19.9997 4.92893,19.0711 4.00035,18.1425 3.26375,17.0401 2.7612,15.8268 2.25866,14.6136 2,13.3132 2,12 2,10.6868 2.25866,9.38642 2.7612,8.17317 3.26375,6.95991 4.00035,5.85752 4.92893,4.92893 5.85752,4.00035 6.95991,3.26375 8.17317,2.7612z M8.93853,4.60896C9.59962,4.33513,10.293,4.15182,11,4.06275L11,8.99928 11,9.00067 11,14.2994 11,14.3007 11,19.5993C11,19.5998,11,19.6002,11,19.6007L11,19.9373C10.293,19.8482 9.59962,19.6649 8.93853,19.391 7.96793,18.989 7.08601,18.3997 6.34315,17.6569 5.60028,16.914 5.011,16.0321 4.60896,15.0615 4.20693,14.0909 4,13.0506 4,12 4,10.9494 4.20693,9.90914 4.60896,8.93853 5.011,7.96793 5.60028,7.08601 6.34315,6.34315 7.08601,5.60028 7.96793,5.011 8.93853,4.60896z M13.0886,19.9256C13.7649,19.8327 14.428,19.6534 15.0615,19.391 16.0321,18.989 16.914,18.3997 17.6569,17.6569 18.3997,16.914 18.989,16.0321 19.391,15.0615 19.6534,14.428 19.8327,13.7649 19.9256,13.0886L13.0886,19.9256z M19.8293,10.3564C19.7277,9.8724 19.5812,9.39767 19.391,8.93853 19.3316,8.79496 19.268,8.65334 19.2005,8.51381L13,14.7143 13,17.1858 19.8293,10.3564z M13,11.8858L18.0824,6.80343C17.9468,6.64475 17.8049,6.49119 17.6569,6.34315 17.391,6.07727 17.1073,5.83107 16.8081,5.60609L13,9.41419 13,11.8858z M15.0014,4.58437C14.3584,4.32413,13.6856,4.14912,13,4.06275L13,6.58576 15.0014,4.58437z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock Text="亮色" VerticalAlignment="Center"></TextBlock>
</modern:SimpleStackPanel>
</Button>
</Grid>
</modern:SimpleStackPanel>
</Grid>
</Border>
</Grid>
</Grid>
</Border>
</Grid>
</UserControl>

View File

@ -0,0 +1,469 @@
using iNKORE.UI.WPF.Modern.Controls;
using Newtonsoft.Json.Linq;
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 iNKORE.UI.WPF.Helpers;
using static Ink_Canvas.Popups.ColorPalette;
namespace Ink_Canvas.Popups {
public partial class ColorPalette : UserControl {
public enum ColorPaletteColor {
ColorBlack,
ColorWhite,
ColorRed,
ColorOrange,
ColorYellow,
ColorLime,
ColorGreen,
ColorTeal,
ColorCyan,
ColorBlue,
ColorIndigo,
ColorPurple,
ColorFuchsia,
ColorPink,
ColorRose
};
private Color[] _lightColors = new Color[] {
Color.FromRgb(9, 9, 11),
Color.FromRgb(250, 250, 250),
Color.FromRgb(220, 38, 38),
Color.FromRgb(234, 88, 12),
Color.FromRgb(250, 204, 21),
Color.FromRgb(101, 163, 13),
Color.FromRgb(22, 163, 74),
Color.FromRgb(13, 148, 136),
Color.FromRgb(2, 132, 199),
Color.FromRgb(37, 99, 235),
Color.FromRgb(79, 70, 229),
Color.FromRgb(124, 58, 237),
Color.FromRgb(192, 38, 211),
Color.FromRgb(219, 39, 119),
Color.FromRgb(225, 29, 72),
};
public string[] ColorPaletteColorStrings = new[] {
"black", "white", "red", "orange", "yellow", "lime", "green", "teal", "cyan", "blue", "indigo", "purple",
"fuchsia", "pink", "rose"
};
public Border[] ColorPaletteColorButtonBorders;
public Border[] PenModeTabButtonBorders;
public SimpleStackPanel[] PenModeTabButtonIndicators;
public GeometryDrawing[] PenModeTabButtonIcons;
public TextBlock[] PenModeTabButtonTexts;
private ColorPaletteColor _colorSelected = ColorPaletteColor.ColorRed;
public ColorPaletteColor SelectedColor {
get => _colorSelected;
set {
var pre = _colorSelected;
_colorSelected = value;
ColorSelectionChanged?.Invoke(this, new ColorSelectionChangedEventArgs {
PreviousColor = pre,
NowColor = value,
TriggerMode = TriggerMode.TriggeredByCode,
});
}
}
private bool _inkRecognition = true;
public bool InkRecognition {
get => _inkRecognition;
set {
var pre = _inkRecognition;
_inkRecognition = value;
InkRecognitionChanged?.Invoke(this, new InkRecognitionChangedEventArgs
{
PreviousStatus = pre,
NowStatus = value,
TriggerMode = TriggerMode.TriggeredByCode,
});
}
}
private void InkRecognitionMoreButton_MouseDown(object sender, MouseButtonEventArgs e) {
var ircm = this.FindResource("InkRecognitionContextMenu") as ContextMenu;
var transform = InkRecognitionMoreButton.TransformToVisual(this);
var pt = transform.Transform(new Point(0, 0));
ircm.VerticalOffset = pt.Y-4;
ircm.HorizontalOffset = pt.X-4;
ircm.IsOpen = !ircm.IsOpen;
}
private void UpdateInkRecognitionContextMenyDisplayStatus() {
var ircm = (ContextMenu)this.FindResource("InkRecognitionContextMenu");
var enableRecog = ircm.Items[0] as MenuItem;
enableRecog.IsChecked = _inkRecognition;
var recogTri = ircm.Items[2] as MenuItem;
var recogQua = ircm.Items[3] as MenuItem;
var recogEll = ircm.Items[4] as MenuItem;
var recogPlg = ircm.Items[5] as MenuItem;
var ft2Curve = ircm.Items[7] as MenuItem;
var recogSub = new MenuItem[] {
recogTri, recogQua, recogEll, recogPlg,
};
foreach (var mi in recogSub) mi.IsEnabled = _inkRecognition;
}
private void InkRecognitionContextMenuItem_Checked(object sender, RoutedEventArgs e) {
var mi = (MenuItem)sender;
if (mi.Name == "EnableRecog") {
var pre = _inkRecognition;
Trace.WriteLine(mi.IsChecked);
_inkRecognition = mi.IsChecked;
UpdateInkRecognitionContextMenyDisplayStatus();
InkRecognitionToggleSwitchImage.Source =
this.FindResource(_inkRecognition ? "SwitchOnImage" : "SwitchOffImage") as DrawingImage;
InkRecognitionChanged?.Invoke(this, new InkRecognitionChangedEventArgs
{
PreviousStatus = pre,
NowStatus = _inkRecognition,
TriggerMode = TriggerMode.TriggeredByUser,
});
} else {
UpdateInkRecognitionContextMenyDisplayStatus();
InkRecognitionChanged?.Invoke(this, new InkRecognitionChangedEventArgs
{
PreviousStatus = _inkRecognition,
NowStatus = _inkRecognition,
TriggerMode = TriggerMode.TriggeredByUser,
});
}
}
private void InkRecognitionToggleSwitchButton_Clicked(object sender, RoutedEventArgs e) {
var pre = _inkRecognition;
_inkRecognition = !_inkRecognition;
InkRecognitionToggleSwitchImage.Source =
this.FindResource(_inkRecognition ? "SwitchOnImage" : "SwitchOffImage") as DrawingImage;
UpdateInkRecognitionContextMenyDisplayStatus();
InkRecognitionChanged?.Invoke(this, new InkRecognitionChangedEventArgs
{
PreviousStatus = pre,
NowStatus = _inkRecognition,
TriggerMode = TriggerMode.TriggeredByUser,
});
}
private void InkRecognitionContextMenu_Closed(object sender, RoutedEventArgs e) {
InkRecognitionMoreButton.Background = new SolidColorBrush(Colors.Transparent);
UpdateInkRecognitionContextMenyDisplayStatus();
}
private void InkRecognitionContextMenu_Opened(object sender, RoutedEventArgs e) {
InkRecognitionMoreButton.Background = new SolidColorBrush(Color.FromArgb(34,39, 39, 42));
UpdateInkRecognitionContextMenyDisplayStatus();
}
public enum PenMode {
PenMode,
HighlighterMode,
LaserPenMode
}
private PenMode _penModeSelected = PenMode.PenMode;
public PenMode PenModeSelected
{
get => _penModeSelected;
set
{
var pre = _penModeSelected;
_penModeSelected = value;
PenModeChanged?.Invoke(this, new PenModeChangedEventArgs()
{
PreviousMode = pre,
NowMode = value,
TriggerMode = TriggerMode.TriggeredByCode,
});
}
}
public enum TriggerMode {
TriggeredByUser,
TriggeredByCode
}
public enum PressureSimulation {
PointSimulate,
VelocitySimulate,
None
}
private PressureSimulation _simulatePressure = PressureSimulation.PointSimulate;
public PressureSimulation SimulatePressure
{
get => _simulatePressure;
set
{
var pre = _simulatePressure;
_simulatePressure = value;
PressureSimulationChanged?.Invoke(this, new PressureSimulationChangedEventArgs()
{
PreviousMode = pre,
NowMode = value,
TriggerMode = TriggerMode.TriggeredByCode,
});
}
}
private void UpdateSimulatePressureContextMenuDisplayStatus()
{
var spcm = (ContextMenu)this.FindResource("SimulatePressureContextMenu");
var pointSP = spcm.Items[0] as MenuItem;
var velocitySP = spcm.Items[1] as MenuItem;
var noneSP = spcm.Items[2] as MenuItem;
var pressSub = new MenuItem[] {
pointSP, velocitySP, noneSP
};
foreach (var mi in pressSub) {
if (mi.Name=="PointSP") mi.IsChecked = _simulatePressure == PressureSimulation.PointSimulate;
else if (mi.Name == "VelocitySP") mi.IsChecked = _simulatePressure == PressureSimulation.VelocitySimulate;
else if (mi.Name == "NoneSP") mi.IsChecked = _simulatePressure == PressureSimulation.None;
}
}
private void SimulatePressureContextMenu_Closed(object sender, RoutedEventArgs e) {
SimulatePressureMoreButton.Background = new SolidColorBrush(Colors.Transparent);
UpdateSimulatePressureContextMenuDisplayStatus();
}
private void SimulatePressureContextMenu_Opened(object sender, RoutedEventArgs e) {
SimulatePressureMoreButton.Background = new SolidColorBrush(Color.FromArgb(34, 39, 39, 42));
UpdateSimulatePressureContextMenuDisplayStatus();
}
private void SimulatePressureContextMenuItem_Checked(object sender, RoutedEventArgs e) {
}
private void SimulatePressureToggleSwitchButton_Clicked(object sender, RoutedEventArgs e) {
var pre = _simulatePressure;
_simulatePressure = _simulatePressure == PressureSimulation.None ? PressureSimulation.PointSimulate : PressureSimulation.None;
SimulatePressureToggleSwitchImage.Source =
this.FindResource(_simulatePressure != PressureSimulation.None ? "SwitchOnImage" : "SwitchOffImage") as DrawingImage;
UpdateSimulatePressureContextMenuDisplayStatus();
PressureSimulationChanged?.Invoke(this, new PressureSimulationChangedEventArgs()
{
PreviousMode = pre,
NowMode = _simulatePressure,
TriggerMode = TriggerMode.TriggeredByUser,
});
}
private void SimulatePressureMoreButton_MouseDown(object sender, MouseButtonEventArgs e) {
var spcm = this.FindResource("SimulatePressureContextMenu") as ContextMenu;
var transform = SimulatePressureMoreButton.TransformToVisual(this);
var pt = transform.Transform(new Point(0, 0));
spcm.VerticalOffset = pt.Y - 4;
spcm.HorizontalOffset = pt.X - 4;
spcm.IsOpen = !spcm.IsOpen;
}
private Border lastColorBtnDown;
public void UpdateColorButtonsDisplayStatus() {
foreach (var bd in ColorPaletteColorButtonBorders) {
bd.Child = null;
}
var index = (int)_colorSelected;
var bdSel = ColorPaletteColorButtonBorders[index];
Image checkedImage = new Image();
checkedImage.Width = 24;
checkedImage.Height = 24;
var checkLight = this.FindResource("CheckedLightIcon");
var checkDark = this.FindResource("CheckedDarkIcon");
if (_colorSelected == ColorPaletteColor.ColorWhite
|| _colorSelected == ColorPaletteColor.ColorYellow) checkedImage.Source = checkDark as DrawingImage;
else checkedImage.Source = checkLight as DrawingImage;
bdSel.Child = checkedImage;
}
public void UpdatePenModeButtonsDisplayStatus() {
foreach (var bd in PenModeTabButtonBorders) {
bd.Background = new SolidColorBrush(Colors.Transparent);
}
foreach (var indicator in PenModeTabButtonIndicators) {
indicator.Visibility = Visibility.Hidden;
}
foreach (var gd in PenModeTabButtonIcons) {
gd.Brush = new SolidColorBrush(Color.FromRgb(63, 63, 70));
}
foreach (var text in PenModeTabButtonTexts) {
text.Foreground = new SolidColorBrush(Color.FromRgb(63, 63, 70));
text.FontWeight = FontWeights.Normal;
}
PenModeTabButtonBorders[(int)_penModeSelected].Background = new SolidColorBrush(Color.FromArgb(34, 59, 130, 246));
PenModeTabButtonIndicators[(int)_penModeSelected].Visibility = Visibility.Visible;
PenModeTabButtonIcons[(int)_penModeSelected].Brush = new SolidColorBrush(Color.FromRgb(37, 99, 235));
PenModeTabButtonTexts[(int)_penModeSelected].Foreground = new SolidColorBrush(Color.FromRgb(37, 99, 235));
PenModeTabButtonTexts[(int)_penModeSelected].FontWeight = FontWeights.Bold;
}
private void PenTabButton_MouseDown(object sender, MouseButtonEventArgs e) {
var pre = _penModeSelected;
_penModeSelected = (PenMode)Array.IndexOf(PenModeTabButtonBorders, (Border)sender);
UpdatePenModeButtonsDisplayStatus();
PenModeChanged?.Invoke(this, new PenModeChangedEventArgs()
{
PreviousMode = pre,
NowMode = _penModeSelected,
TriggerMode = TriggerMode.TriggeredByUser,
});
}
private void ColorButton_MouseDown(object sender, MouseButtonEventArgs e) {
lastColorBtnDown = sender as Border;
ColorBtnStoryboardScaleSmaller(sender);
}
private void ColorButton_MouseUp(object sender, MouseButtonEventArgs e) {
if (lastColorBtnDown != sender) return;
lastColorBtnDown = null;
var border = (Border)sender;
var index = Array.IndexOf(ColorPaletteColorStrings, border.Name.ToLower());
var pre = _colorSelected;
_colorSelected = (ColorPaletteColor)index;
UpdateColorButtonsDisplayStatus();
ColorBtnStoryboardScaleLarger(sender);
ColorSelectionChanged?.Invoke(this, new ColorSelectionChangedEventArgs {
PreviousColor = pre,
NowColor = (ColorPaletteColor)index,
TriggerMode = TriggerMode.TriggeredByUser,
});
}
private void ColorBtnStoryBoardScaleAnimation(object sender, double from, double to) {
var border = sender as Border;
var sb = new Storyboard();
var scaleAnimationX = new DoubleAnimation() {
From = from,
To = to,
Duration = new Duration(TimeSpan.FromMilliseconds(100))
};
var scaleAnimationY = new DoubleAnimation() {
From = from,
To = to,
Duration = new Duration(TimeSpan.FromMilliseconds(100))
};
scaleAnimationY.EasingFunction = new CubicEase();
scaleAnimationX.EasingFunction = new CubicEase();
Storyboard.SetTargetProperty(scaleAnimationX,
new PropertyPath("(UIElement.RenderTransform).(ScaleTransform.ScaleX)"));
Storyboard.SetTargetProperty(scaleAnimationY,
new PropertyPath("(UIElement.RenderTransform).(ScaleTransform.ScaleY)"));
sb.Children.Add(scaleAnimationX);
sb.Children.Add(scaleAnimationY);
sb.Begin(border);
}
private void ColorBtnStoryboardScaleSmaller(object sender) {
ColorBtnStoryBoardScaleAnimation(sender, 1D, 0.9);
}
private void ColorBtnStoryboardScaleLarger(object sender) {
ColorBtnStoryBoardScaleAnimation(sender, 0.9, 1D);
}
private void ColorButton_MouseLeave(object sender, MouseEventArgs e) {
if (lastColorBtnDown != null) {
var la = lastColorBtnDown as Border;
var st = la.RenderTransform as ScaleTransform;
if (st.ScaleX != 1 && st.ScaleY != 1) ColorBtnStoryboardScaleLarger(lastColorBtnDown);
}
lastColorBtnDown = null;
}
public class ColorSelectionChangedEventArgs : EventArgs {
public ColorPaletteColor PreviousColor { get; set; }
public ColorPaletteColor NowColor { get; set; }
public TriggerMode TriggerMode { get; set; }
}
public class PenModeChangedEventArgs : EventArgs
{
public PenMode PreviousMode { get; set; }
public PenMode NowMode { get; set; }
public TriggerMode TriggerMode { get; set; }
}
public class PressureSimulationChangedEventArgs : EventArgs
{
public PressureSimulation PreviousMode { get; set; }
public PressureSimulation NowMode { get; set; }
public TriggerMode TriggerMode { get; set; }
}
public class InkRecognitionOptions {
public bool isEnableInkRecognition;
public bool isRecognizeEllipse;
public bool isRecognizeTriangle;
public bool isRecognizeQuadrilateral;
public bool isRecognizePolygon;
public bool isFitToCurve;
}
public class InkRecognitionChangedEventArgs : EventArgs {
public bool PreviousStatus { get; set; }
public bool NowStatus { get; set; }
public TriggerMode TriggerMode { get; set; }
public InkRecognitionOptions Options { get; set; }
}
public event EventHandler<ColorSelectionChangedEventArgs> ColorSelectionChanged;
public event EventHandler<PenModeChangedEventArgs> PenModeChanged;
public event EventHandler<InkRecognitionChangedEventArgs> InkRecognitionChanged;
public event EventHandler<PressureSimulationChangedEventArgs> PressureSimulationChanged;
public ColorPalette() {
InitializeComponent();
ColorPaletteColorButtonBorders = new Border[] {
Black, White, Red, Orange, Yellow, Lime, Green, Teal, Cyan, Blue, Indigo, Purple, Fuchsia, Pink, Rose
};
PenModeTabButtonBorders = new Border[] {
PenTabButton, HighlighterTabButton, LaserPenTabButton
};
PenModeTabButtonIndicators = new SimpleStackPanel[] {
PenTabButtonIndicator, HighlighterTabButtonIndicator, LaserPenTabButtonIndicator
};
PenModeTabButtonIcons = new GeometryDrawing[] {
PenTabButtonIcon, HighlighterTabButtonIcon, LaserPenTabButtonIcon
};
PenModeTabButtonTexts = new TextBlock[] {
PenTabButtonText, HighlighterTabButtonText, LaserPenTabButtonText
};
foreach (var bd in ColorPaletteColorButtonBorders) {
bd.RenderTransformOrigin = new Point(0.5, 0.5);
bd.RenderTransform = new ScaleTransform(1, 1);
}
UpdatePenModeButtonsDisplayStatus();
UpdateColorButtonsDisplayStatus();
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -1,17 +0,0 @@
<Application x:Class="PeroInstaller.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
xmlns:local="clr-namespace:PeroInstaller"
xmlns:system="clr-namespace:System;assembly=System.Runtime"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ui:ThemeResources/>
<ui:XamlControlsResources/>
<ResourceDictionary Source="InstallerConfig.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

View File

@ -1,13 +0,0 @@
using System.Configuration;
using System.Data;
using System.Windows;
namespace PeroInstaller
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
}
}

View File

@ -1,10 +0,0 @@
using System.Windows;
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]

View File

@ -1,9 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:system="clr-namespace:System;assembly=System.Runtime">
<system:String x:Key="InstallerWindowTitle">InkCanvasForClass 安装向导</system:String>
<system:String x:Key="ProductName">InkCanvasForClass</system:String>
<system:String x:Key="ProductSlogan">开源的简单易用小巧强大的屏幕批注软件</system:String>
<system:String x:Key="ProductBundleVersion">20240710V1P1</system:String>
<BitmapImage x:Key="ProductIcon" UriSource="pack://application:,,,/resources/icc.png"/>
</ResourceDictionary>

View File

@ -1,118 +0,0 @@
<Window x:Class="PeroInstaller.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PeroInstaller"
xmlns:ui="http://schemas.inkore.net/lib/ui/wpf/modern"
mc:Ignorable="d"
ui:ThemeManager.RequestedTheme="Light"
ResizeMode="NoResize"
Title="{StaticResource InstallerWindowTitle}" Height="600" Width="400">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*" />
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
<ui:SimpleStackPanel Grid.Row="0" Orientation="Vertical" Margin="8">
<Image Source="{StaticResource ProductIcon}" Width="64" Height="64" Margin="0,6,0,0"/>
<TextBlock FontSize="22" FontWeight="Bold" TextAlignment="Center" Margin="0,4,0,0" Text="{StaticResource ProductName}"/>
<TextBlock FontSize="14" TextAlignment="Center" Opacity="0.6" Text="{StaticResource ProductSlogan}"/>
<Line
X1="0" Y1="0"
X2="250" Y2="0"
Stroke="#a1a1aa"
StrokeThickness="1"
Margin="0,16,0,6"
HorizontalAlignment="Center"
StrokeStartLineCap="Round"
StrokeEndLineCap="Round"/>
<TextBlock FontSize="10" TextAlignment="Center" Opacity="0.6">基于PeroInstaller包装打包版本<Run Text="{StaticResource ProductBundleVersion}"></Run></TextBlock>
</ui:SimpleStackPanel>
<Grid Grid.Row="1">
<TabControl ui:TabControlHelper.IsAddTabButtonVisible="False">
<TabItem Name="InstallTab" Width="78" MinWidth="0" ui:TabItemHelper.Icon="{x:Null}">
<TabItem.Header>
<ui:SimpleStackPanel HorizontalAlignment="Center" Orientation="Horizontal" Spacing="3" Margin="-5,0,0,0">
<Image Width="20" Height="20">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#FF000000" Geometry="F0 M24,24z M0,0z M13,4C13,3.44772 12.5523,3 12,3 11.4477,3 11,3.44772 11,4L11,13.5858 7.70711,10.2929C7.31658,9.90237 6.68342,9.90237 6.29289,10.2929 5.90237,10.6834 5.90237,11.3166 6.29289,11.7071L11.2922,16.7064C11.2946,16.7088 11.297,16.7112 11.2995,16.7136 11.3938,16.8063 11.502,16.8764 11.6172,16.9241 11.7343,16.9727 11.8625,16.9996 11.997,17 11.998,17 11.999,17 12,17 12.001,17 12.002,17 12.003,17 12.2746,16.9992 12.5208,16.8901 12.7005,16.7136 12.703,16.7112 12.7054,16.7088 12.7078,16.7064L17.7071,11.7071C18.0976,11.3166 18.0976,10.6834 17.7071,10.2929 17.3166,9.90237 16.6834,9.90237 16.2929,10.2929L13,13.5858 13,4z M4,16C4.55228,16,5,16.4477,5,17L5,19C5,19.2652 5.10536,19.5196 5.29289,19.7071 5.48043,19.8946 5.73478,20 6,20L18,20C18.2652,20 18.5196,19.8946 18.7071,19.7071 18.8946,19.5196 19,19.2652 19,19L19,17C19,16.4477 19.4477,16 20,16 20.5523,16 21,16.4477 21,17L21,19C21,19.7957 20.6839,20.5587 20.1213,21.1213 19.5587,21.6839 18.7957,22 18,22L6,22C5.20435,22 4.44129,21.6839 3.87868,21.1213 3.31607,20.5587 3,19.7957 3,19L3,17C3,16.4477,3.44772,16,4,16z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock VerticalAlignment="Center">安装</TextBlock>
</ui:SimpleStackPanel>
</TabItem.Header>
<TextBlock Text="Content 1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</TabItem>
<TabItem Name="RemoveTab" Width="78" MinWidth="0" ui:TabItemHelper.Icon="{x:Null}">
<TabItem.Header>
<ui:SimpleStackPanel HorizontalAlignment="Center" Orientation="Horizontal" Spacing="3" Margin="-5,0,0,0">
<Image Width="20" Height="20">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#FF000000" Geometry="F0 M24,24z M0,0z M10,2C9.46957,2 8.96086,2.21071 8.58579,2.58579 8.21071,2.96086 8,3.46957 8,4L8,6 4,6C3.44772,6 3,6.44772 3,7 3,7.55228 3.44772,8 4,8L4.07992,8 5.0004,19.0458C5.01228,19.8249 5.32693,20.5696 5.87874,21.1214 6.44134,21.684 7.20441,22.0001 8.00006,22.0001L16.0001,22.0001C16.7957,22.0001 17.5588,21.684 18.1214,21.1214 18.6732,20.5696 18.9878,19.8249 18.9997,19.0458L19.9202,8 20,8C20.5523,8 21,7.55228 21,7 21,6.44772 20.5523,6 20,6L16,6 16,4C16,3.46957 15.7893,2.96086 15.4142,2.58579 15.0391,2.21071 14.5304,2 14,2L10,2z M14,6L14,4 10,4 10,6 14,6z M9,8L6.08685,8 6.9966,18.917C6.9989,18.9446 7.00006,18.9723 7.00006,19.0001 7.00006,19.2653 7.10541,19.5196 7.29295,19.7072 7.48049,19.8947 7.73484,20.0001 8.00006,20.0001L16.0001,20.0001C16.2653,20.0001 16.5196,19.8947 16.7072,19.7072 16.8947,19.5196 17.0001,19.2653 17.0001,19.0001 17.0001,18.9723 17.0012,18.9446 17.0035,18.917L17.9133,8 15,8 9,8z M10,10C10.5523,10,11,10.4477,11,11L11,17C11,17.5523 10.5523,18 10,18 9.44772,18 9,17.5523 9,17L9,11C9,10.4477,9.44772,10,10,10z M15,11C15,10.4477 14.5523,10 14,10 13.4477,10 13,10.4477 13,11L13,17C13,17.5523 13.4477,18 14,18 14.5523,18 15,17.5523 15,17L15,11z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock VerticalAlignment="Center">卸载</TextBlock>
</ui:SimpleStackPanel>
</TabItem.Header>
<TextBlock Text="Content 2" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</TabItem>
<TabItem Name="UpdateTab" Width="78" MinWidth="0" ui:TabItemHelper.Icon="{x:Null}">
<TabItem.Header>
<ui:SimpleStackPanel HorizontalAlignment="Center" Orientation="Horizontal" Spacing="3" Margin="-5,0,0,0">
<Image Width="20" Height="20">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#FF000000" Geometry="F0 M24,24z M0,0z M13.1418,3.08997C11.1621,2.83453 9.15344,3.23706 7.42509,4.23555 6.49773,4.7713 5.67868,5.46268 5.00012,6.27306L5.00012,5.0002C5.00012,4.44791 4.55241,4.0002 4.00012,4.0002 3.44784,4.0002 3.00012,4.44791 3.00012,5.0002L3.00012,9.0002C3.00012,9.55248,3.44784,10.0002,4.00012,10.0002L4.47695,10.0002C4.49216,10.0005,4.50734,10.0005,4.52249,10.0002L8.00012,10.0002C8.55241,10.0002 9.00012,9.55248 9.00012,9.0002 9.00012,8.44791 8.55241,8.0002 8.00012,8.0002L6.19127,8.0002C6.77809,7.17511 7.53828,6.47992 8.42556,5.96733 9.77405,5.18829 11.3413,4.87423 12.8858,5.07353 14.4304,5.27282 15.8665,5.97442 16.9731,7.07024 18.0797,8.16607 18.7953,9.59532 19.0096,11.1378 19.0857,11.6849 19.5907,12.0667 20.1378,11.9907 20.6848,11.9147 21.0666,11.4096 20.9906,10.8625 20.7159,8.88551 19.7987,7.05365 18.3804,5.64914 16.9621,4.24464 15.1214,3.34541 13.1418,3.08997z M4.9906,12.8624C4.91458,12.3153 4.4095,11.9335 3.86247,12.0095 3.31545,12.0855 2.93362,12.5906 3.00964,13.1376 3.28439,15.1147 4.20155,16.9466 5.61984,18.3511 7.03812,19.7556 8.87885,20.6548 10.8585,20.9102 12.8381,21.1657 14.8468,20.7631 16.5752,19.7646 17.5025,19.2289 18.3216,18.5375 19.0001,17.7271L19.0001,19C19.0001,19.5523 19.4478,20 20.0001,20 20.5524,20 21.0001,19.5523 21.0001,19L21.0001,15C21.0001,14.4477,20.5524,14,20.0001,14L19.5233,14C19.5081,13.9997,19.4929,13.9997,19.4778,14L16.0001,14C15.4478,14 15.0001,14.4477 15.0001,15 15.0001,15.5523 15.4478,16 16.0001,16L17.809,16C17.2222,16.8251 16.462,17.5203 15.5747,18.0329 14.2262,18.8119 12.659,19.126 11.1144,18.9267 9.56988,18.7274 8.1337,18.0258 7.02713,16.93 5.92056,15.8341 5.20497,14.4049 4.9906,12.8624z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock VerticalAlignment="Center">更新</TextBlock>
</ui:SimpleStackPanel>
</TabItem.Header>
<TextBlock Text="Content 3" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</TabItem>
<TabItem Name="ModifyTab" Width="78" MinWidth="0" ui:TabItemHelper.Icon="{x:Null}">
<TabItem.Header>
<ui:SimpleStackPanel HorizontalAlignment="Center" Orientation="Horizontal" Spacing="3" Margin="-5,0,0,0">
<Image Width="20" Height="20">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<DrawingGroup ClipGeometry="M0,0 V24 H24 V0 H0 Z">
<GeometryDrawing Brush="#FF000000" Geometry="F0 M24,24z M0,0z M8.37853,3.96432L10.707,6.29275C10.8945,6.48028,10.9999,6.73464,10.9999,6.99986L10.9999,9.99986C10.9999,10.5521,10.5521,10.9999,9.99986,10.9999L6.99986,10.9999C6.73464,10.9999,6.48028,10.8945,6.29275,10.707L3.96432,8.37853C3.89111,8.89104 3.89749,9.41483 3.98608,9.93115 4.16092,10.9502 4.64741,11.89 5.37853,12.6212 6.10966,13.3523 7.04948,13.8388 8.06856,14.0136 9.08764,14.1885 10.1359,14.0431 11.0689,13.5975 11.4513,13.4149 11.9073,13.4931 12.207,13.7927L18.207,19.7927C18.4172,20.003 18.7025,20.1212 18.9999,20.1212 19.2972,20.1212 19.5825,20.003 19.7927,19.7927 20.003,19.5825 20.1212,19.2972 20.1212,18.9999 20.1212,18.7025 20.003,18.4172 19.7927,18.207L13.7927,12.207C13.4931,11.9073 13.4149,11.4513 13.5975,11.0689 14.0431,10.1359 14.1885,9.08764 14.0136,8.06856 13.8388,7.04948 13.3523,6.10966 12.6212,5.37853 11.89,4.64741 10.9502,4.16092 9.93115,3.98608 9.41483,3.89749 8.89104,3.89111 8.37853,3.96432z M6.06889,2.59749C7.37513,1.97364 8.84264,1.77009 10.2694,2.01488 11.6961,2.25966 13.0118,2.94074 14.0354,3.96432 15.059,4.9879 15.74,6.30364 15.9848,7.73035 16.1888,8.91918 16.0815,10.1363 15.6791,11.2649L21.207,16.7927C21.7923,17.3781 22.1212,18.172 22.1212,18.9999 22.1212,19.8277 21.7923,20.6216 21.207,21.207 20.6216,21.7923 19.8277,22.1212 18.9999,22.1212 18.172,22.1212 17.3781,21.7923 16.7927,21.207L11.2649,15.6791C10.1363,16.0815 8.91918,16.1888 7.73035,15.9848 6.30364,15.74 4.9879,15.059 3.96432,14.0354 2.94074,13.0118 2.25966,11.6961 2.01488,10.2694 1.77009,8.84264 1.97364,7.37513 2.59749,6.06889 2.73739,5.77595 3.01079,5.56915 3.33075,5.51426 3.65071,5.45936 3.97741,5.5632 4.20696,5.79275L7.41407,8.99986 8.99986,8.99986 8.99986,7.41407 5.79275,4.20696C5.5632,3.97741 5.45936,3.65071 5.51426,3.33075 5.56915,3.01079 5.77595,2.73739 6.06889,2.59749z" />
</DrawingGroup>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<TextBlock VerticalAlignment="Center">修改</TextBlock>
</ui:SimpleStackPanel>
</TabItem.Header>
<TextBlock Text="Content 4" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</TabItem>
</TabControl>
</Grid>
</Grid>
</Window>

View File

@ -1,24 +0,0 @@
using System.Text;
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 PeroInstaller
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}

View File

@ -1,17 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
<SupportedOSPlatformVersion>7.0</SupportedOSPlatformVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="iNKORE.UI.WPF" Version="1.2.7.1" />
<PackageReference Include="iNKORE.UI.WPF.Modern" Version="0.9.27" />
</ItemGroup>
</Project>

View File

@ -1,16 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows10.0.18362.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="iNKORE.UI.WPF" Version="1.2.7.1" />
<PackageReference Include="iNKORE.UI.WPF.Modern" Version="0.9.27" />
</ItemGroup>
</Project>

View File

@ -1,25 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows10.0.18362.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
<SupportedOSPlatformVersion>7.0</SupportedOSPlatformVersion>
</PropertyGroup>
<ItemGroup>
<None Remove="resources\icc.png" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="iNKORE.UI.WPF" Version="1.2.7.1" />
<PackageReference Include="iNKORE.UI.WPF.Modern" Version="0.9.27" />
</ItemGroup>
<ItemGroup>
<Resource Include="resources\icc.png" />
</ItemGroup>
</Project>

View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<_LastSelectedProfileId>D:\vs\ica\PeroInstaller\Properties\PublishProfiles\FolderProfile.pubxml</_LastSelectedProfileId>
</PropertyGroup>
<ItemGroup>
<ApplicationDefinition Update="App.xaml">
<SubType>Designer</SubType>
</ApplicationDefinition>
</ItemGroup>
<ItemGroup>
<Page Update="InstallerConfig.xaml">
<SubType>Designer</SubType>
</Page>
<Page Update="MainWindow.xaml">
<SubType>Designer</SubType>
</Page>
</ItemGroup>
</Project>

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>bin\dist\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<_TargetId>Folder</_TargetId>
<TargetFramework>net6.0-windows</TargetFramework>
<RuntimeIdentifier>win-x86</RuntimeIdentifier>
<SelfContained>true</SelfContained>
<PublishSingleFile>true</PublishSingleFile>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
</Project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
</Project>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

View File

@ -15,23 +15,15 @@
<tbody> <tbody>
<tr> <tr>
<td><a href="https://gitea.bliemhax.com/kriastans/InkCanvasForClass/src/branch/master/InkCanvasForClass">/InkCanvasForClass</a></td> <td><a href="https://gitea.bliemhax.com/kriastans/InkCanvasForClass/src/branch/master/InkCanvasForClass">/InkCanvasForClass</a></td>
<td>InkCanvasForClass v5 舊版項目</td> <td>InkCanvasForClass v5</td>
</tr> </tr>
<tr> <tr>
<td><a href="https://gitea.bliemhax.com/kriastans/InkCanvasForClass/src/branch/master/InkCanvasForClassX">/InkCanvasForClassX</a></td> <td><a href="https://gitea.bliemhax.com/kriastans/InkCanvasForClass/src/branch/master/InkCanvasForClassX">/InkCanvasForClassX</a></td>
<td>InkCanvasForClass v6 新版項目(開發</td> <td>InkCanvasForClass v6 新版項目(已停止開發)</td>
</tr> </tr>
<tr> <tr>
<td><a href="https://gitea.bliemhax.com/kriastans/InkCanvasForClass/src/branch/master/CvtePaintDemo">/CvtePaintDemo</a></td> <td><a href="https://gitea.bliemhax.com/kriastans/InkCanvasForClass/src/branch/master/InkCanvasForClassPPTVsto">/InkCanvasForClassPPTVsto</a></td>
<td>基於 <code>Cvte.Paint</code> 實現的高性能白板模式 Demo</td> <td>InkCanvasForClass PPT交互的VSTO加載項</td>
</tr>
<tr>
<td><a href="https://gitea.bliemhax.com/kriastans/InkCanvasForClass/src/branch/master/Demos">/Demos</a></td>
<td>其他測試的Demo文件夾</td>
</tr>
<tr>
<td><a href="https://gitea.bliemhax.com/kriastans/InkCanvasForClass/src/branch/master/Assets">/Assets</a></td>
<td>存放InkCanvasForClass開發過程中使用到的資源</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
@ -47,14 +39,12 @@
本產品與peppy的osu!以及其周邊項目和產品無任何關聯該Logo僅供娛樂用若有侵權請聯繫Dev協商解決。 本產品與peppy的osu!以及其周邊項目和產品無任何關聯該Logo僅供娛樂用若有侵權請聯繫Dev協商解決。
## 公告 ## 公告
舊項目InkCanvasForClass基於ICA分支的版本將不再積極開發依舊會修復Bug和功能優化但開發週期將會變長。新項目InkCanvasForClassX不基於任何現有的IC家族的項目完全重寫只參考了IC、ICA、ICC舊版的設計理念和部分代碼性能更好更穩定。新項目正在開發中已經新建文件夾了XD所以把這個repo變成MonoRepo 新項目 InkCanvasForClass v6 已經停止開發,所有將會在 InkCanvasForClass v6 使用到的新功能和技術將會下放到 InkCanvasForClass v5
## 提示 ## 提示
- 對新功能的有效意見和合理建議,開發者會適時回復並進行開發。本軟體並非商業性質軟體,請勿催促開發者,耐心才能讓功能更少 BUG、更加穩定。 - 對新功能的有效意見和合理建議,開發者會適時回復並進行開發。本軟體並非商業性質軟體,請勿催促開發者,耐心才能讓功能更少 BUG、更加穩定。
- 此軟體僅用於私人使用請勿商用。更新也不會很快如果有能力請PR貢獻程式碼而不是在Issue裡面提問題。 - 此軟體僅用於私人使用請勿商用。更新也不會很快如果有能力請PR貢獻程式碼而不是在Issue裡面提問題。
- 歡迎您使用InkCanvas家族的其他成員包括ICC和ICA的創始者IC以及和ICC差不多的ICA。您的大力宣傳能夠幫助我們的軟件被更多的用戶發現。 - 歡迎您使用InkCanvas家族的其他成員包括ICC和ICA的創始者IC以及和ICC差不多的ICA。您的大力宣傳能夠幫助我們的軟件被更多的用戶發現。
- 基於 `Cvte.Paint` 實現的高性能白板模式 Demo可以實現希沃一體機的RawInput觸摸輸入和如希沃白板一樣的流暢體驗因為就是“希沃白板”產品中提取出來的DLL。該Demo力求將 `Cvte.Paint` 和 InkCanvasForClass的功能融合到一起使其既擁有InkCanvasForClass一樣的操作邏輯和設計又能提供來自希沃設備生態的便捷性。
- 基於 `Cvte.Paint` 實現的高性能白板模式 Demo包含了由廣州視睿科技開發的程序該Demo中使用了從“希沃白板”產品中提取出來的DLL。若有侵權問題請聯繫開發者下架該Demo。
## 如何聯繫我 ## 如何聯繫我
1. QQ群聊825759306 1. QQ群聊825759306