@@ -265,25 +265,10 @@ namespace Ink_Canvas {
|
||||
catch { }
|
||||
}
|
||||
|
||||
// 新增:记录上一个模式
|
||||
private InkCanvasEditingMode lastEditingMode = InkCanvasEditingMode.Ink;
|
||||
|
||||
private void inkCanvas_EditingModeChanged(object sender, RoutedEventArgs e) {
|
||||
var inkCanvas1 = sender as InkCanvas;
|
||||
if (inkCanvas1 == null) return;
|
||||
|
||||
// 只负责显示/隐藏覆盖层,不再强制切换模式
|
||||
var eraserOverlay = this.FindName("AdvancedEraserOverlay") as Border;
|
||||
if (eraserOverlay != null) {
|
||||
if (inkCanvas1.EditingMode == InkCanvasEditingMode.EraseByPoint) {
|
||||
eraserOverlay.IsHitTestVisible = true;
|
||||
Trace.WriteLine("Advanced Eraser: Overlay enabled in eraser mode");
|
||||
} else {
|
||||
eraserOverlay.IsHitTestVisible = false;
|
||||
DisableAdvancedEraserSystem();
|
||||
Trace.WriteLine("Advanced Eraser: Overlay disabled in non-eraser mode");
|
||||
}
|
||||
}
|
||||
// 使用辅助方法设置光标
|
||||
SetCursorBasedOnEditingMode(inkCanvas1);
|
||||
if (Settings.Canvas.IsShowCursor) {
|
||||
@@ -294,13 +279,31 @@ namespace Ink_Canvas {
|
||||
else
|
||||
inkCanvas1.ForceCursor = false;
|
||||
} else {
|
||||
// 套索选择模式下始终强制显示光标,即使用户设置不显示光标
|
||||
if (inkCanvas1.EditingMode == InkCanvasEditingMode.Select) {
|
||||
inkCanvas1.ForceCursor = true;
|
||||
} else {
|
||||
inkCanvas1.ForceCursor = false;
|
||||
}
|
||||
}
|
||||
|
||||
if (inkCanvas1.EditingMode == InkCanvasEditingMode.Ink) forcePointEraser = !forcePointEraser;
|
||||
|
||||
// 处理高级橡皮擦覆盖层的启用/禁用
|
||||
var eraserOverlay = this.FindName("AdvancedEraserOverlay") as Border;
|
||||
if (eraserOverlay != null) {
|
||||
if (inkCanvas1.EditingMode == InkCanvasEditingMode.EraseByPoint) {
|
||||
// 橡皮擦模式下启用覆盖层
|
||||
eraserOverlay.IsHitTestVisible = true;
|
||||
Trace.WriteLine("Advanced Eraser: Overlay enabled in eraser mode");
|
||||
} else {
|
||||
// 其他模式下禁用覆盖层
|
||||
eraserOverlay.IsHitTestVisible = false;
|
||||
// 同时禁用高级橡皮擦系统
|
||||
DisableAdvancedEraserSystem();
|
||||
Trace.WriteLine("Advanced Eraser: Overlay disabled in non-eraser mode");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Ink Canvas
|
||||
@@ -311,16 +314,11 @@ namespace Ink_Canvas {
|
||||
public static string settingsFileName = "Settings.json";
|
||||
private bool isLoaded = false;
|
||||
private bool forcePointEraser = false;
|
||||
public static bool EnablePalmEraser = true;
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e) {
|
||||
loadPenCanvas();
|
||||
//加载设置
|
||||
LoadSettings(true);
|
||||
// 同步手掌擦开关
|
||||
EnablePalmEraser = Settings.Canvas.EnablePalmEraser;
|
||||
if (ToggleSwitchEnablePalmEraser != null)
|
||||
ToggleSwitchEnablePalmEraser.IsOn = EnablePalmEraser;
|
||||
|
||||
// 加载自定义背景颜色
|
||||
LoadCustomBackgroundColor();
|
||||
@@ -400,14 +398,6 @@ namespace Ink_Canvas {
|
||||
|
||||
// 初始化插件系统
|
||||
InitializePluginSystem();
|
||||
|
||||
// 新增:确保EditingModeChanged事件已绑定
|
||||
var inkCanvas = this.FindName("inkCanvas") as InkCanvas;
|
||||
if (inkCanvas != null)
|
||||
{
|
||||
inkCanvas.EditingModeChanged -= inkCanvas_EditingModeChanged;
|
||||
inkCanvas.EditingModeChanged += inkCanvas_EditingModeChanged;
|
||||
}
|
||||
}
|
||||
|
||||
private void SystemEventsOnDisplaySettingsChanged(object sender, EventArgs e) {
|
||||
@@ -1351,13 +1341,5 @@ namespace Ink_Canvas {
|
||||
BorderSettings.Visibility = Visibility.Visible;
|
||||
BorderSettingsMask.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
private void ToggleSwitchEnablePalmEraser_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
EnablePalmEraser = ToggleSwitchEnablePalmEraser.IsOn;
|
||||
Settings.Canvas.EnablePalmEraser = EnablePalmEraser;
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user