This commit is contained in:
2025-07-29 19:07:59 +08:00
parent ce61f0e2b7
commit 6a8cdd0155
3 changed files with 30 additions and 4 deletions
@@ -1371,6 +1371,10 @@ namespace Ink_Canvas {
// 禁用高级橡皮擦系统
DisableAdvancedEraserSystem();
// 修复:从橡皮擦切换到批注模式时,退出多指书写模式
// 这解决了从橡皮擦切换为批注时被锁定为多指书写的问题
ExitMultiTouchModeIfNeeded();
FloatingbarSelectionBG.Visibility = Visibility.Visible;
System.Windows.Controls.Canvas.SetLeft(FloatingbarSelectionBG, 28);
+10 -1
View File
@@ -106,7 +106,11 @@ namespace Ink_Canvas {
private void BtnPen_Click(object sender, RoutedEventArgs e) {
// 禁用高级橡皮擦系统
DisableAdvancedEraserSystem();
// 修复:从橡皮擦切换到批注模式时,退出多指书写模式
// 这解决了从橡皮擦切换为批注时被锁定为多指书写的问题
ExitMultiTouchModeIfNeeded();
// 如果当前已是批注模式,再次点击弹出批注子面板
if (penType == 0 && inkCanvas.EditingMode == InkCanvasEditingMode.Ink && !drawingAttributes.IsHighlighter) {
return;
@@ -119,6 +123,11 @@ namespace Ink_Canvas {
drawingAttributes.IsHighlighter = false;
drawingAttributes.StylusTip = StylusTip.Ellipse;
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
// 修复:确保从橡皮擦切换到笔时,多指手势功能能正确恢复
// 更新lastInkCanvasEditingMode以确保多指手势逻辑正确
lastInkCanvasEditingMode = InkCanvasEditingMode.Ink;
SetCursorBasedOnEditingMode(inkCanvas);
}
+16 -3
View File
@@ -364,13 +364,24 @@ namespace Ink_Canvas {
}
//手势完成后切回之前的状态
if (dec.Count > 1)
if (inkCanvas.EditingMode == InkCanvasEditingMode.None)
// 修复:改进多指手势恢复逻辑,确保从橡皮擦切换到笔时多指手势能正确恢复
if (dec.Count > 1) {
if (inkCanvas.EditingMode == InkCanvasEditingMode.None) {
if (lastInkCanvasEditingMode != InkCanvasEditingMode.EraseByPoint) {
inkCanvas.EditingMode = lastInkCanvasEditingMode;
}
}
} else if (dec.Count == 0) {
// 当所有触摸点都抬起时,确保正确恢复编辑模式
// 这对于从橡皮擦切换到笔后恢复多指手势功能很重要
if (inkCanvas.EditingMode == InkCanvasEditingMode.None &&
lastInkCanvasEditingMode != InkCanvasEditingMode.None &&
lastInkCanvasEditingMode != InkCanvasEditingMode.EraseByPoint) {
inkCanvas.EditingMode = lastInkCanvasEditingMode;
}
}
inkCanvas.Opacity = 1;
if (dec.Count == 0)
if (lastTouchDownStrokeCollection.Count() != inkCanvas.Strokes.Count() &&
!(drawingShapeMode == 9 && !isFirstTouchCuboid)) {
@@ -390,6 +401,8 @@ namespace Ink_Canvas {
if (e.Manipulators.Count() != 0) return;
if (drawingShapeMode == 0 && inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint) {
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
// 修复:确保多指手势完成后正确更新lastInkCanvasEditingMode
lastInkCanvasEditingMode = InkCanvasEditingMode.Ink;
}
}