From 7eee02dc9476ddde87398d1c450dbfbc91ffa934 Mon Sep 17 00:00:00 2001 From: CJKmkp <2564608840@qq.com> Date: Thu, 1 Jan 2026 18:21:28 +0800 Subject: [PATCH] =?UTF-8?q?improve:=E6=98=BE=E7=A4=BA=E7=94=BB=E7=AC=94?= =?UTF-8?q?=E5=85=89=E6=A0=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Ink Canvas/MainWindow.xaml.cs | 31 +++++++++++++++++++--- Ink Canvas/MainWindow_cs/MW_TouchEvents.cs | 1 - 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs index 6ea57aa4..9f8e702b 100644 --- a/Ink Canvas/MainWindow.xaml.cs +++ b/Ink Canvas/MainWindow.xaml.cs @@ -72,7 +72,8 @@ namespace Ink_Canvas // 全屏处理状态标志 public bool isFullScreenApplied = false; - + private static Cursor _cachedPenCursor = null; + private static readonly object _cursorLock = new object(); #region Window Initialization @@ -1363,9 +1364,31 @@ namespace Ink_Canvas } else if (canvas.EditingMode == InkCanvasEditingMode.Ink) { - var sri = Application.GetResourceStream(new Uri("Resources/Cursors/Pen.cur", UriKind.Relative)); - if (sri != null) - canvas.Cursor = new Cursor(sri.Stream); + if (_cachedPenCursor == null) + { + lock (_cursorLock) + { + if (_cachedPenCursor == null) + { + try + { + var sri = Application.GetResourceStream(new Uri("Resources/Cursors/Pen.cur", UriKind.Relative)); + if (sri != null) + { + _cachedPenCursor = new Cursor(sri.Stream); + } + } + catch (Exception ex) + { + LogHelper.WriteLogToFile($"加载 Pen 光标资源失败: {ex.Message}", LogHelper.LogType.Error); + } + } + } + } + if (_cachedPenCursor != null) + { + canvas.Cursor = _cachedPenCursor; + } } // 确保光标可见,无论是鼠标、触控还是手写笔 diff --git a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs index a544c5cf..76e93cb9 100644 --- a/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs +++ b/Ink Canvas/MainWindow_cs/MW_TouchEvents.cs @@ -418,7 +418,6 @@ namespace Ink_Canvas } catch { } - SetCursorBasedOnEditingMode(inkCanvas); var strokeVisual = GetStrokeVisual(e.StylusDevice.Id); var stylusPointCollection = e.GetStylusPoints(this);