From 6105f8759d1946bb4c8f7b5c74ae33a595114705 Mon Sep 17 00:00:00 2001
From: CJKmkp <2564608840@qq.com>
Date: Sat, 2 May 2026 17:26:40 +0800
Subject: [PATCH] improve:OOBE
---
Ink Canvas/Windows/OobePresetWindow.xaml | 293 ++++++++++++++++++++
Ink Canvas/Windows/OobePresetWindow.xaml.cs | 176 ++++++++++++
Ink Canvas/Windows/OobeWindow.xaml | 13 +-
Ink Canvas/Windows/OobeWindow.xaml.cs | 22 ++
4 files changed, 503 insertions(+), 1 deletion(-)
create mode 100644 Ink Canvas/Windows/OobePresetWindow.xaml
create mode 100644 Ink Canvas/Windows/OobePresetWindow.xaml.cs
diff --git a/Ink Canvas/Windows/OobePresetWindow.xaml b/Ink Canvas/Windows/OobePresetWindow.xaml
new file mode 100644
index 00000000..2ef85450
--- /dev/null
+++ b/Ink Canvas/Windows/OobePresetWindow.xaml
@@ -0,0 +1,293 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Ink Canvas/Windows/OobePresetWindow.xaml.cs b/Ink Canvas/Windows/OobePresetWindow.xaml.cs
new file mode 100644
index 00000000..c86f7237
--- /dev/null
+++ b/Ink Canvas/Windows/OobePresetWindow.xaml.cs
@@ -0,0 +1,176 @@
+using System.Windows;
+using System.Windows.Input;
+using System.Windows.Media;
+
+namespace Ink_Canvas.Windows
+{
+ public partial class OobePresetWindow : Window
+ {
+ public enum PresetKind { None, Standard, Lite }
+
+ public PresetKind SelectedPreset { get; private set; } = PresetKind.None;
+
+ public OobePresetWindow()
+ {
+ InitializeComponent();
+ }
+
+ private void SelectPreset(PresetKind kind)
+ {
+ SelectedPreset = kind;
+
+ // 重置所有卡片边框
+ var defaultBrush = (Brush)FindResource("SystemControlForegroundBaseLowBrush");
+ CardStandard.BorderBrush = defaultBrush;
+ CardLite.BorderBrush = defaultBrush;
+ IconStandard.Opacity = 0;
+ IconLite.Opacity = 0;
+
+ var accentBrush = (Brush)FindResource("SystemControlForegroundAccentBrush");
+ switch (kind)
+ {
+ case PresetKind.Standard:
+ CardStandard.BorderBrush = accentBrush;
+ IconStandard.Opacity = 1;
+ break;
+ case PresetKind.Lite:
+ CardLite.BorderBrush = accentBrush;
+ IconLite.Opacity = 1;
+ break;
+ }
+
+ BtnApply.IsEnabled = kind != PresetKind.None;
+ }
+
+ private void CardStandard_Click(object sender, MouseButtonEventArgs e) => SelectPreset(PresetKind.Standard);
+
+ private void CardLite_Click(object sender, MouseButtonEventArgs e) => SelectPreset(PresetKind.Lite);
+
+ private void BtnApply_Click(object sender, RoutedEventArgs e)
+ {
+ if (SelectedPreset == PresetKind.None) return;
+ DialogResult = true;
+ Close();
+ }
+
+ private void BtnCancel_Click(object sender, RoutedEventArgs e)
+ {
+ DialogResult = false;
+ Close();
+ }
+
+ // ── 预设定义 ────────────────────────────────────────────────────────
+
+ ///
+ /// 课堂标准配置:适合大多数教学场景,启用 PPT 联动、自动保存、手势等。
+ ///
+ public static void ApplyStandard(Settings settings)
+ {
+ if (settings == null) return;
+
+ // 启动与隐私
+ settings.Startup.IsFoldAtStartup = true;
+ settings.Startup.IsAutoUpdate = true;
+ settings.Startup.CrashAction = 0; // 静默重启
+ settings.Startup.TelemetryUploadLevel = TelemetryUploadLevel.Basic;
+ settings.Startup.HasAcceptedTelemetryPrivacy = true;
+
+ // 画板与墨迹
+ settings.Canvas.IsShowCursor = false;
+ settings.Canvas.DisablePressure = false;
+ settings.Canvas.HideStrokeWhenSelecting = true;
+ settings.Canvas.EnablePalmEraser = true;
+
+ // 墨迹纠正
+ settings.InkToShape.IsInkToShapeEnabled = true;
+
+ // 手势
+ settings.Gesture.IsEnableTwoFingerZoom = true;
+ settings.Gesture.IsEnableTwoFingerTranslate = true;
+ settings.Gesture.AutoSwitchTwoFingerGesture = true;
+
+ // 个性化
+ settings.Appearance.Theme = 2; // 跟随系统
+ settings.Appearance.EnableSplashScreen = false;
+ settings.Appearance.EnableTrayIcon = true;
+ settings.Appearance.IsShowQuickPanel = true;
+ settings.Appearance.EnableHotkeysInMouseMode = false;
+
+ // PPT 联动
+ settings.PowerPointSettings.PowerPointSupport = true;
+ settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint = true;
+ settings.PowerPointSettings.IsAutoSaveScreenShotInPowerPoint = true;
+ settings.PowerPointSettings.EnablePPTTimeCapsule = true;
+
+ // 自动化
+ settings.Automation.IsAutoFoldInPPTSlideShow = false;
+ settings.Automation.IsEnableAutoSaveStrokes = true;
+ settings.Automation.IsAutoSaveStrokesAtClear = true;
+ settings.Automation.IsSaveScreenshotsInDateFolders = true;
+ if (settings.Automation.FloatingWindowInterceptor != null)
+ settings.Automation.FloatingWindowInterceptor.IsEnabled = true;
+
+ // 随机点名
+ settings.RandSettings.ShowRandomAndSingleDraw = true;
+
+ // 高级
+ settings.Advanced.IsLogEnabled = true;
+ }
+
+ ///
+ /// 简洁轻量配置:最小化后台行为,适合简单批注场景。
+ ///
+ public static void ApplyLite(Settings settings)
+ {
+ if (settings == null) return;
+
+ // 启动与隐私
+ settings.Startup.IsFoldAtStartup = true;
+ settings.Startup.IsAutoUpdate = true;
+ settings.Startup.CrashAction = 0;
+ settings.Startup.TelemetryUploadLevel = TelemetryUploadLevel.None;
+ settings.Startup.HasAcceptedTelemetryPrivacy = true;
+
+ // 画板与墨迹
+ settings.Canvas.IsShowCursor = false;
+ settings.Canvas.DisablePressure = false;
+ settings.Canvas.HideStrokeWhenSelecting = true;
+ settings.Canvas.EnablePalmEraser = false;
+
+ // 墨迹纠正
+ settings.InkToShape.IsInkToShapeEnabled = false;
+
+ // 手势
+ settings.Gesture.IsEnableTwoFingerZoom = false;
+ settings.Gesture.IsEnableTwoFingerTranslate = false;
+ settings.Gesture.AutoSwitchTwoFingerGesture = false;
+
+ // 个性化
+ settings.Appearance.Theme = 2; // 跟随系统
+ settings.Appearance.EnableSplashScreen = false;
+ settings.Appearance.EnableTrayIcon = true;
+ settings.Appearance.IsShowQuickPanel = false;
+ settings.Appearance.EnableHotkeysInMouseMode = false;
+
+ // PPT 联动
+ settings.PowerPointSettings.PowerPointSupport = true;
+ settings.PowerPointSettings.IsAutoSaveStrokesInPowerPoint = true;
+ settings.PowerPointSettings.IsAutoSaveScreenShotInPowerPoint = true;
+ settings.PowerPointSettings.EnablePPTTimeCapsule = false;
+
+ // 自动化
+ settings.Automation.IsAutoFoldInPPTSlideShow = false;
+ settings.Automation.IsEnableAutoSaveStrokes = true;
+ settings.Automation.IsAutoSaveStrokesAtClear = true;
+ settings.Automation.IsSaveScreenshotsInDateFolders = false;
+ if (settings.Automation.FloatingWindowInterceptor != null)
+ settings.Automation.FloatingWindowInterceptor.IsEnabled = false;
+
+ // 随机点名
+ settings.RandSettings.ShowRandomAndSingleDraw = true;
+
+ // 高级
+ settings.Advanced.IsLogEnabled = true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Ink Canvas/Windows/OobeWindow.xaml b/Ink Canvas/Windows/OobeWindow.xaml
index 1ea47654..1f17d12c 100644
--- a/Ink Canvas/Windows/OobeWindow.xaml
+++ b/Ink Canvas/Windows/OobeWindow.xaml
@@ -194,10 +194,21 @@
Style="{DynamicResource AccentButtonStyle}"
Click="BtnStartWelcome_Click">
-
+
+
+
diff --git a/Ink Canvas/Windows/OobeWindow.xaml.cs b/Ink Canvas/Windows/OobeWindow.xaml.cs
index 23f63c08..cda26854 100644
--- a/Ink Canvas/Windows/OobeWindow.xaml.cs
+++ b/Ink Canvas/Windows/OobeWindow.xaml.cs
@@ -303,6 +303,28 @@ namespace Ink_Canvas.Windows
NavigateTo(0, direction: 1);
}
+ private void BtnUsePreset_Click(object sender, RoutedEventArgs e)
+ {
+ var presetWindow = new OobePresetWindow { Owner = this };
+ bool? result = presetWindow.ShowDialog();
+ if (result != true) return;
+
+ switch (presetWindow.SelectedPreset)
+ {
+ case OobePresetWindow.PresetKind.Standard:
+ OobePresetWindow.ApplyStandard(_settings);
+ break;
+ case OobePresetWindow.PresetKind.Lite:
+ OobePresetWindow.ApplyLite(_settings);
+ break;
+ default:
+ return;
+ }
+
+ DialogResult = true;
+ Close();
+ }
+
private void BtnConfirm_Click(object sender, RoutedEventArgs e)
{
if (_currentStep == FinishIndex)