fix:issue #217
This commit is contained in:
@@ -1866,13 +1866,9 @@ namespace Ink_Canvas
|
|||||||
if (sender == Cursor_Icon && lastBorderMouseDownObject != Cursor_Icon) return;
|
if (sender == Cursor_Icon && lastBorderMouseDownObject != Cursor_Icon) return;
|
||||||
|
|
||||||
// 禁用高级橡皮擦系统
|
// 禁用高级橡皮擦系统
|
||||||
DisableEraserOverlay();
|
DisableEraserOverlay();
|
||||||
|
|
||||||
// 使用集中化的工具模式切换方法,确保快捷键状态正确更新
|
|
||||||
// 鼠标模式下应该禁用快捷键以放行键盘操作
|
|
||||||
SetCurrentToolMode(InkCanvasEditingMode.None);
|
SetCurrentToolMode(InkCanvasEditingMode.None);
|
||||||
|
|
||||||
// 更新模式缓存,确保后续的模式检测正确
|
|
||||||
UpdateCurrentToolMode("cursor");
|
UpdateCurrentToolMode("cursor");
|
||||||
|
|
||||||
SetFloatingBarHighlightPosition("cursor");
|
SetFloatingBarHighlightPosition("cursor");
|
||||||
@@ -2312,7 +2308,7 @@ namespace Ink_Canvas
|
|||||||
if (sender == EraserByStrokes_Icon && lastBorderMouseDownObject != EraserByStrokes_Icon) return;
|
if (sender == EraserByStrokes_Icon && lastBorderMouseDownObject != EraserByStrokes_Icon) return;
|
||||||
|
|
||||||
// 禁用高级橡皮擦系统
|
// 禁用高级橡皮擦系统
|
||||||
DisableEraserOverlay();
|
DisableEraserOverlay();
|
||||||
|
|
||||||
forceEraser = true;
|
forceEraser = true;
|
||||||
forcePointEraser = false;
|
forcePointEraser = false;
|
||||||
|
|||||||
@@ -491,25 +491,15 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
if (drawingShapeMode != 0)
|
if (drawingShapeMode != 0)
|
||||||
{
|
{
|
||||||
// 确保几何绘制模式下不切换到Ink模式,避免触摸轨迹被收集
|
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||||
|
|
||||||
if (!isTouchDown) return;
|
if (!isTouchDown) return;
|
||||||
|
|
||||||
if (isWaitUntilNextTouchDown && dec.Count > 1) return;
|
if (isWaitUntilNextTouchDown && dec.Count > 1) return;
|
||||||
if (dec.Count > 1)
|
|
||||||
{
|
|
||||||
if ((drawingShapeMode == 24 || drawingShapeMode == 25) && drawMultiStepShapeCurrentStep == 1)
|
|
||||||
{
|
|
||||||
// 第二笔绘制双曲线时,只删除第二笔的临时笔画,保留第一笔的辅助线
|
|
||||||
try
|
|
||||||
{
|
|
||||||
inkCanvas.Strokes.Remove(lastTempStroke);
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
// 对于多笔图形绘制,允许第二笔绘制,即使dec.Count > 1
|
||||||
|
if (dec.Count > 1 && !((drawingShapeMode == 24 || drawingShapeMode == 25) && drawMultiStepShapeCurrentStep == 1))
|
||||||
|
{
|
||||||
// 其他情况正常删除临时笔画
|
// 其他情况正常删除临时笔画
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -523,6 +513,17 @@ namespace Ink_Canvas
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 第二笔绘制双曲线时,只删除第二笔的临时笔画,保留第一笔的辅助线
|
||||||
|
if ((drawingShapeMode == 24 || drawingShapeMode == 25) && drawMultiStepShapeCurrentStep == 1)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
inkCanvas.Strokes.Remove(lastTempStroke);
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
// 不直接返回,继续执行绘制逻辑
|
||||||
|
}
|
||||||
|
|
||||||
Point touchPoint = e.GetTouchPoint(inkCanvas).Position;
|
Point touchPoint = e.GetTouchPoint(inkCanvas).Position;
|
||||||
if ((drawingShapeMode == 24 || drawingShapeMode == 25) && drawMultiStepShapeCurrentStep == 1)
|
if ((drawingShapeMode == 24 || drawingShapeMode == 25) && drawMultiStepShapeCurrentStep == 1)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -245,7 +245,6 @@ namespace Ink_Canvas
|
|||||||
|
|
||||||
if (drawingShapeMode != 0)
|
if (drawingShapeMode != 0)
|
||||||
{
|
{
|
||||||
// 确保几何绘制模式下不切换到Ink模式,避免触摸轨迹被收集
|
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||||
|
|
||||||
isTouchDown = true;
|
isTouchDown = true;
|
||||||
@@ -538,7 +537,6 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
if (drawingShapeMode != 0)
|
if (drawingShapeMode != 0)
|
||||||
{
|
{
|
||||||
// 确保几何绘制模式下不切换到Ink模式,避免触摸轨迹被收集
|
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||||
|
|
||||||
// 设置触摸状态,类似鼠标事件处理
|
// 设置触摸状态,类似鼠标事件处理
|
||||||
@@ -601,14 +599,14 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
if (drawingShapeMode != 0)
|
if (drawingShapeMode != 0)
|
||||||
{
|
{
|
||||||
// 确保几何绘制模式下不切换到Ink模式,避免触摸轨迹收集
|
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||||
// 几何绘制模式下不记录触摸点,避免触摸轨迹被收集
|
|
||||||
SetCursorBasedOnEditingMode(inkCanvas);
|
SetCursorBasedOnEditingMode(inkCanvas);
|
||||||
inkCanvas.CaptureTouch(e.TouchDevice);
|
inkCanvas.CaptureTouch(e.TouchDevice);
|
||||||
ViewboxFloatingBar.IsHitTestVisible = false;
|
ViewboxFloatingBar.IsHitTestVisible = false;
|
||||||
BlackboardUIGridForInkReplay.IsHitTestVisible = false;
|
BlackboardUIGridForInkReplay.IsHitTestVisible = false;
|
||||||
|
|
||||||
|
isTouchDown = true;
|
||||||
|
|
||||||
if (dec.Count == 0)
|
if (dec.Count == 0)
|
||||||
{
|
{
|
||||||
var inkTouchPoint = e.GetTouchPoint(inkCanvas);
|
var inkTouchPoint = e.GetTouchPoint(inkCanvas);
|
||||||
|
|||||||
Reference in New Issue
Block a user