fix:issue #118
This commit is contained in:
@@ -1371,6 +1371,10 @@ namespace Ink_Canvas {
|
||||
// 禁用高级橡皮擦系统
|
||||
DisableAdvancedEraserSystem();
|
||||
|
||||
// 修复:从橡皮擦切换到批注模式时,退出多指书写模式
|
||||
// 这解决了从橡皮擦切换为批注时被锁定为多指书写的问题
|
||||
ExitMultiTouchModeIfNeeded();
|
||||
|
||||
FloatingbarSelectionBG.Visibility = Visibility.Visible;
|
||||
System.Windows.Controls.Canvas.SetLeft(FloatingbarSelectionBG, 28);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user