fix:触摸线擦
This commit is contained in:
@@ -71,7 +71,8 @@ namespace Ink_Canvas
|
|||||||
inkCanvas.StylusUp -= MainWindow_StylusUp;
|
inkCanvas.StylusUp -= MainWindow_StylusUp;
|
||||||
inkCanvas.TouchDown -= MainWindow_TouchDown;
|
inkCanvas.TouchDown -= MainWindow_TouchDown;
|
||||||
inkCanvas.TouchDown += Main_Grid_TouchDown;
|
inkCanvas.TouchDown += Main_Grid_TouchDown;
|
||||||
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint)
|
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint
|
||||||
|
&& inkCanvas.EditingMode != InkCanvasEditingMode.EraseByStroke)
|
||||||
{
|
{
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
||||||
}
|
}
|
||||||
@@ -91,7 +92,8 @@ namespace Ink_Canvas
|
|||||||
inkCanvas.StylusUp += MainWindow_StylusUp;
|
inkCanvas.StylusUp += MainWindow_StylusUp;
|
||||||
inkCanvas.TouchDown += MainWindow_TouchDown;
|
inkCanvas.TouchDown += MainWindow_TouchDown;
|
||||||
inkCanvas.TouchDown -= Main_Grid_TouchDown;
|
inkCanvas.TouchDown -= Main_Grid_TouchDown;
|
||||||
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint)
|
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint
|
||||||
|
&& inkCanvas.EditingMode != InkCanvasEditingMode.EraseByStroke)
|
||||||
{
|
{
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||||
}
|
}
|
||||||
@@ -127,7 +129,8 @@ namespace Ink_Canvas
|
|||||||
// 只保留普通橡皮逻辑
|
// 只保留普通橡皮逻辑
|
||||||
TouchDownPointsList[e.TouchDevice.Id] = InkCanvasEditingMode.None;
|
TouchDownPointsList[e.TouchDevice.Id] = InkCanvasEditingMode.None;
|
||||||
inkCanvas.EraserShape = new EllipseStylusShape(50, 50);
|
inkCanvas.EraserShape = new EllipseStylusShape(50, 50);
|
||||||
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint)
|
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint
|
||||||
|
&& inkCanvas.EditingMode != InkCanvasEditingMode.EraseByStroke)
|
||||||
{
|
{
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||||
}
|
}
|
||||||
@@ -149,8 +152,12 @@ namespace Ink_Canvas
|
|||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// 修复:保持当前的线擦模式,不要强制切换到Ink模式
|
||||||
|
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByStroke)
|
||||||
|
{
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
SetCursorBasedOnEditingMode(inkCanvas);
|
SetCursorBasedOnEditingMode(inkCanvas);
|
||||||
|
|
||||||
inkCanvas.CaptureStylus();
|
inkCanvas.CaptureStylus();
|
||||||
@@ -320,7 +327,12 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint)
|
if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByStroke)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint
|
||||||
|
&& inkCanvas.EditingMode != InkCanvasEditingMode.EraseByStroke)
|
||||||
{
|
{
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
||||||
}
|
}
|
||||||
@@ -335,14 +347,15 @@ namespace Ink_Canvas
|
|||||||
private void inkCanvas_PreviewTouchDown(object sender, TouchEventArgs e)
|
private void inkCanvas_PreviewTouchDown(object sender, TouchEventArgs e)
|
||||||
{
|
{
|
||||||
// 橡皮状态下不做任何切换,直接return,保证橡皮可持续
|
// 橡皮状态下不做任何切换,直接return,保证橡皮可持续
|
||||||
if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint)
|
if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint
|
||||||
|
|| inkCanvas.EditingMode == InkCanvasEditingMode.EraseByStroke)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 修复:几何绘制模式下完全禁止触摸轨迹收集
|
// 修复:几何绘制模式下完全禁止触摸轨迹收集
|
||||||
if (drawingShapeMode != 0)
|
if (drawingShapeMode != 0)
|
||||||
{
|
{
|
||||||
// 确保几何绘制模式下不切换到Ink模式,避免触摸轨迹被收集
|
// 确保几何绘制模式下不切换到Ink模式,避免触摸轨迹收集
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||||
// 几何绘制模式下不记录触摸点,避免触摸轨迹被收集
|
// 几何绘制模式下不记录触摸点,避免触摸轨迹被收集
|
||||||
SetCursorBasedOnEditingMode(inkCanvas);
|
SetCursorBasedOnEditingMode(inkCanvas);
|
||||||
@@ -435,7 +448,9 @@ namespace Ink_Canvas
|
|||||||
inkCanvas.EditingMode == InkCanvasEditingMode.Select) return;
|
inkCanvas.EditingMode == InkCanvasEditingMode.Select) return;
|
||||||
lastInkCanvasEditingMode = inkCanvas.EditingMode;
|
lastInkCanvasEditingMode = inkCanvas.EditingMode;
|
||||||
// 修复:几何绘制模式下禁止切回Ink
|
// 修复:几何绘制模式下禁止切回Ink
|
||||||
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint && drawingShapeMode == 0)
|
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint
|
||||||
|
&& inkCanvas.EditingMode != InkCanvasEditingMode.EraseByStroke
|
||||||
|
&& drawingShapeMode == 0)
|
||||||
{
|
{
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||||
}
|
}
|
||||||
@@ -561,7 +576,9 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
if (e.Manipulators.Count() != 0) return;
|
if (e.Manipulators.Count() != 0) return;
|
||||||
// 修复:几何绘制模式下不自动切换到Ink模式,避免触摸轨迹被收集
|
// 修复:几何绘制模式下不自动切换到Ink模式,避免触摸轨迹被收集
|
||||||
if (drawingShapeMode == 0 && inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint)
|
if (drawingShapeMode == 0
|
||||||
|
&& inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint
|
||||||
|
&& inkCanvas.EditingMode != InkCanvasEditingMode.EraseByStroke)
|
||||||
{
|
{
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
||||||
// 修复:确保多指手势完成后正确更新lastInkCanvasEditingMode
|
// 修复:确保多指手势完成后正确更新lastInkCanvasEditingMode
|
||||||
@@ -684,7 +701,9 @@ namespace Ink_Canvas
|
|||||||
inkCanvas.TouchDown -= MainWindow_TouchDown;
|
inkCanvas.TouchDown -= MainWindow_TouchDown;
|
||||||
inkCanvas.TouchDown += Main_Grid_TouchDown;
|
inkCanvas.TouchDown += Main_Grid_TouchDown;
|
||||||
// 修复:几何绘制模式下不自动切换到Ink模式,避免触摸轨迹被收集
|
// 修复:几何绘制模式下不自动切换到Ink模式,避免触摸轨迹被收集
|
||||||
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint && drawingShapeMode == 0)
|
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint
|
||||||
|
&& inkCanvas.EditingMode != InkCanvasEditingMode.EraseByStroke
|
||||||
|
&& drawingShapeMode == 0)
|
||||||
{
|
{
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
||||||
}
|
}
|
||||||
@@ -715,7 +734,9 @@ namespace Ink_Canvas
|
|||||||
inkCanvas.TouchDown += MainWindow_TouchDown;
|
inkCanvas.TouchDown += MainWindow_TouchDown;
|
||||||
inkCanvas.TouchDown -= Main_Grid_TouchDown;
|
inkCanvas.TouchDown -= Main_Grid_TouchDown;
|
||||||
// 修复:几何绘制模式下不自动切换到Ink模式,避免触摸轨迹被收集
|
// 修复:几何绘制模式下不自动切换到Ink模式,避免触摸轨迹被收集
|
||||||
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint && drawingShapeMode == 0)
|
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint
|
||||||
|
&& inkCanvas.EditingMode != InkCanvasEditingMode.EraseByStroke
|
||||||
|
&& drawingShapeMode == 0)
|
||||||
{
|
{
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user