fix:触摸问题

This commit is contained in:
2025-07-18 17:59:17 +08:00
parent 6412892985
commit 2d7eff8205
3 changed files with 44 additions and 0 deletions
@@ -1440,6 +1440,7 @@ namespace Ink_Canvas {
}
private void EraserIcon_Click(object sender, RoutedEventArgs e) {
EnterMultiTouchModeIfNeeded();
bool isAlreadyEraser = inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint;
forceEraser = false;
forcePointEraser = true;
@@ -1464,6 +1465,7 @@ namespace Ink_Canvas {
}
private void BoardEraserIcon_Click(object sender, RoutedEventArgs e) {
EnterMultiTouchModeIfNeeded();
bool isAlreadyEraser = inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint;
forceEraser = false;
forcePointEraser = true;
@@ -1487,6 +1489,7 @@ namespace Ink_Canvas {
}
private void EraserIconByStrokes_Click(object sender, RoutedEventArgs e) {
EnterMultiTouchModeIfNeeded();
if (lastBorderMouseDownObject != null && lastBorderMouseDownObject is Panel)
((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent);
@@ -244,6 +244,7 @@ namespace Ink_Canvas {
}
private void BtnSelect_Click(object sender, RoutedEventArgs e) {
ExitMultiTouchModeIfNeeded();
forceEraser = true;
drawingShapeMode = 0;
inkCanvas.IsManipulationEnabled = false;
@@ -424,6 +425,7 @@ namespace Ink_Canvas {
}
private void LassoSelect_Click(object sender, RoutedEventArgs e) {
ExitMultiTouchModeIfNeeded();
forceEraser = false;
forcePointEraser = false;
isLastTouchEraser = false;
@@ -433,6 +435,7 @@ namespace Ink_Canvas {
}
private void BtnLassoSelect_Click(object sender, RoutedEventArgs e) {
ExitMultiTouchModeIfNeeded();
forceEraser = false;
forcePointEraser = false;
isLastTouchEraser = false;
@@ -479,5 +479,43 @@ namespace Ink_Canvas {
}
}
}
// 退出多指书写模式,恢复InkCanvas的TouchDown事件绑定
private void ExitMultiTouchModeIfNeeded()
{
if (isInMultiTouchMode)
{
inkCanvas.StylusDown -= MainWindow_StylusDown;
inkCanvas.StylusMove -= MainWindow_StylusMove;
inkCanvas.StylusUp -= MainWindow_StylusUp;
inkCanvas.TouchDown -= MainWindow_TouchDown;
inkCanvas.TouchDown += Main_Grid_TouchDown;
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint)
{
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
}
inkCanvas.Children.Clear();
isInMultiTouchMode = false;
}
}
// 进入多指书写模式,绑定Main_Grid_TouchDown
private void EnterMultiTouchModeIfNeeded()
{
if (!isInMultiTouchMode)
{
inkCanvas.StylusDown += MainWindow_StylusDown;
inkCanvas.StylusMove += MainWindow_StylusMove;
inkCanvas.StylusUp += MainWindow_StylusUp;
inkCanvas.TouchDown += MainWindow_TouchDown;
inkCanvas.TouchDown -= Main_Grid_TouchDown;
if (inkCanvas.EditingMode != InkCanvasEditingMode.EraseByPoint)
{
inkCanvas.EditingMode = InkCanvasEditingMode.None;
}
inkCanvas.Children.Clear();
isInMultiTouchMode = true;
}
}
}
}