From a92e58abf1cffb354ace9ea6e01e64a37b7f4bc3 Mon Sep 17 00:00:00 2001 From: unknown <2564608840@qq.com> Date: Fri, 18 Jul 2025 19:20:06 +0800 Subject: [PATCH] =?UTF-8?q?improve:=E7=99=BD=E6=9D=BF=E7=94=BB=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow.xaml.cs | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index 4bb247bc..31cd090d 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -24,9 +24,15 @@ using System.Windows.Media.Animation; using System.Reflection; using Brushes = System.Windows.Media.Brushes; using Point = System.Windows.Point; +using System.Collections.Generic; namespace Ink_Canvas { public partial class MainWindow : Window { + // 新增:每一页一个Canvas对象 + private List whiteboardPages = new List(); + private int currentPageIndex = 0; + private System.Windows.Controls.Canvas currentCanvas = null; + #region Window Initialization public MainWindow() { @@ -109,6 +115,13 @@ namespace Ink_Canvas { // 注册输入事件 inkCanvas.PreviewMouseDown += inkCanvas_PreviewMouseDown; inkCanvas.StylusDown += inkCanvas_StylusDown; + + // 初始化第一页Canvas + var firstCanvas = new System.Windows.Controls.Canvas(); + whiteboardPages.Add(firstCanvas); + InkCanvasGridForInkReplay.Children.Add(firstCanvas); + currentPageIndex = 0; + ShowPage(currentPageIndex); } #endregion @@ -1123,5 +1136,36 @@ namespace Ink_Canvas { inkCanvas.EraserShape = new RectangleStylusShape(k * 90 * 0.6, k * 90); } } + + // 显示指定页 + private void ShowPage(int index) + { + if (index < 0 || index >= whiteboardPages.Count) return; + // 只切换可见性 + for (int i = 0; i < whiteboardPages.Count; i++) + { + whiteboardPages[i].Visibility = (i == index) ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed; + } + currentCanvas = whiteboardPages[index]; + currentPageIndex = index; + } + // 新建页面 + private void AddNewPage() + { + var newCanvas = new System.Windows.Controls.Canvas(); + whiteboardPages.Add(newCanvas); + InkCanvasGridForInkReplay.Children.Add(newCanvas); + ShowPage(whiteboardPages.Count - 1); + } + // 删除当前页面 + private void DeleteCurrentPage() + { + if (whiteboardPages.Count <= 1) return; + InkCanvasGridForInkReplay.Children.Remove(currentCanvas); + whiteboardPages.RemoveAt(currentPageIndex); + if (currentPageIndex >= whiteboardPages.Count) + currentPageIndex = whiteboardPages.Count - 1; + ShowPage(currentPageIndex); + } } } \ No newline at end of file