fix:issue #210
This commit is contained in:
@@ -91,6 +91,9 @@ namespace Ink_Canvas
|
||||
BoardGesture.BorderBrush = new SolidColorBrush(Color.FromRgb(161, 161, 170));
|
||||
BoardGestureGeometry.Geometry = Geometry.Parse(XamlGraphicsIconGeometries.DisabledGestureIcon);
|
||||
BoardGestureGeometry2.Geometry = Geometry.Parse("F0 M24,24z M0,0z");
|
||||
|
||||
// 强制禁用所有双指手势功能
|
||||
ForceDisableTwoFingerGestures();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1887,8 +1890,6 @@ namespace Ink_Canvas
|
||||
// 禁用高级橡皮擦系统
|
||||
DisableAdvancedEraserSystem();
|
||||
|
||||
// 修复:从橡皮擦切换到批注模式时,退出多指书写模式
|
||||
// 这解决了从橡皮擦切换为批注时被锁定为多指书写的问题
|
||||
ExitMultiTouchModeIfNeeded();
|
||||
|
||||
SetFloatingBarHighlightPosition("pen");
|
||||
@@ -1897,14 +1898,20 @@ namespace Ink_Canvas
|
||||
bool wasInInkMode = inkCanvas.EditingMode == InkCanvasEditingMode.Ink;
|
||||
bool wasHighlighter = drawingAttributes.IsHighlighter;
|
||||
|
||||
// 禁止几何绘制模式下切换到Ink
|
||||
if (drawingShapeMode != 0)
|
||||
if (drawingShapeMode != 0 && !isLongPressSelected)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (Pen_Icon.Background == null || StackPanelCanvasControls.Visibility == Visibility.Collapsed)
|
||||
{
|
||||
if (isLongPressSelected)
|
||||
{
|
||||
drawingShapeMode = 0;
|
||||
isLongPressSelected = false;
|
||||
ResetAllShapeButtonsOpacity();
|
||||
}
|
||||
|
||||
// 使用集中化的工具模式切换方法
|
||||
SetCurrentToolMode(InkCanvasEditingMode.Ink);
|
||||
|
||||
@@ -3724,7 +3731,32 @@ namespace Ink_Canvas
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 强制禁用所有双指手势功能(当多指书写模式启用时)
|
||||
/// </summary>
|
||||
private void ForceDisableTwoFingerGestures()
|
||||
{
|
||||
// 强制关闭所有双指手势设置
|
||||
Settings.Gesture.IsEnableTwoFingerTranslate = false;
|
||||
Settings.Gesture.IsEnableTwoFingerZoom = false;
|
||||
Settings.Gesture.IsEnableTwoFingerRotation = false;
|
||||
|
||||
// 更新UI开关状态
|
||||
if (ToggleSwitchEnableTwoFingerTranslate != null)
|
||||
ToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||
if (ToggleSwitchEnableTwoFingerZoom != null)
|
||||
ToggleSwitchEnableTwoFingerZoom.IsOn = false;
|
||||
if (ToggleSwitchEnableTwoFingerRotation != null)
|
||||
ToggleSwitchEnableTwoFingerRotation.IsOn = false;
|
||||
|
||||
// 更新设置窗口中的开关状态
|
||||
if (BoardToggleSwitchEnableTwoFingerTranslate != null)
|
||||
BoardToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||
if (BoardToggleSwitchEnableTwoFingerZoom != null)
|
||||
BoardToggleSwitchEnableTwoFingerZoom.IsOn = false;
|
||||
if (BoardToggleSwitchEnableTwoFingerRotation != null)
|
||||
BoardToggleSwitchEnableTwoFingerRotation.IsOn = false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1787,6 +1787,18 @@ namespace Ink_Canvas
|
||||
private void ToggleSwitchEnableTwoFingerZoom_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
|
||||
// 如果多指书写模式启用,强制禁用双指手势
|
||||
if (ToggleSwitchEnableMultiTouchMode.IsOn)
|
||||
{
|
||||
ToggleSwitchEnableTwoFingerZoom.IsOn = false;
|
||||
BoardToggleSwitchEnableTwoFingerZoom.IsOn = false;
|
||||
Settings.Gesture.IsEnableTwoFingerZoom = false;
|
||||
CheckEnableTwoFingerGestureBtnColorPrompt();
|
||||
SaveSettingsToFile();
|
||||
return;
|
||||
}
|
||||
|
||||
if (sender == ToggleSwitchEnableTwoFingerZoom)
|
||||
BoardToggleSwitchEnableTwoFingerZoom.IsOn = ToggleSwitchEnableTwoFingerZoom.IsOn;
|
||||
else
|
||||
@@ -1866,6 +1878,32 @@ namespace Ink_Canvas
|
||||
}
|
||||
|
||||
Settings.Gesture.IsEnableMultiTouchMode = ToggleSwitchEnableMultiTouchMode.IsOn;
|
||||
|
||||
// 如果启用多指书写模式,强制禁用所有双指手势
|
||||
if (ToggleSwitchEnableMultiTouchMode.IsOn)
|
||||
{
|
||||
// 强制关闭所有双指手势设置
|
||||
Settings.Gesture.IsEnableTwoFingerTranslate = false;
|
||||
Settings.Gesture.IsEnableTwoFingerZoom = false;
|
||||
Settings.Gesture.IsEnableTwoFingerRotation = false;
|
||||
|
||||
// 更新UI开关状态
|
||||
if (ToggleSwitchEnableTwoFingerTranslate != null)
|
||||
ToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||
if (ToggleSwitchEnableTwoFingerZoom != null)
|
||||
ToggleSwitchEnableTwoFingerZoom.IsOn = false;
|
||||
if (ToggleSwitchEnableTwoFingerRotation != null)
|
||||
ToggleSwitchEnableTwoFingerRotation.IsOn = false;
|
||||
|
||||
// 更新设置窗口中的开关状态
|
||||
if (BoardToggleSwitchEnableTwoFingerTranslate != null)
|
||||
BoardToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||
if (BoardToggleSwitchEnableTwoFingerZoom != null)
|
||||
BoardToggleSwitchEnableTwoFingerZoom.IsOn = false;
|
||||
if (BoardToggleSwitchEnableTwoFingerRotation != null)
|
||||
BoardToggleSwitchEnableTwoFingerRotation.IsOn = false;
|
||||
}
|
||||
|
||||
CheckEnableTwoFingerGestureBtnColorPrompt();
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
@@ -1873,6 +1911,18 @@ namespace Ink_Canvas
|
||||
private void ToggleSwitchEnableTwoFingerTranslate_Toggled(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
|
||||
// 如果多指书写模式启用,强制禁用双指手势
|
||||
if (ToggleSwitchEnableMultiTouchMode.IsOn)
|
||||
{
|
||||
ToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||
BoardToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||
Settings.Gesture.IsEnableTwoFingerTranslate = false;
|
||||
CheckEnableTwoFingerGestureBtnColorPrompt();
|
||||
SaveSettingsToFile();
|
||||
return;
|
||||
}
|
||||
|
||||
if (sender == ToggleSwitchEnableTwoFingerTranslate)
|
||||
BoardToggleSwitchEnableTwoFingerTranslate.IsOn = ToggleSwitchEnableTwoFingerTranslate.IsOn;
|
||||
else
|
||||
@@ -1886,6 +1936,17 @@ namespace Ink_Canvas
|
||||
{
|
||||
if (!isLoaded) return;
|
||||
|
||||
// 如果多指书写模式启用,强制禁用双指手势
|
||||
if (ToggleSwitchEnableMultiTouchMode.IsOn)
|
||||
{
|
||||
ToggleSwitchEnableTwoFingerRotation.IsOn = false;
|
||||
BoardToggleSwitchEnableTwoFingerRotation.IsOn = false;
|
||||
Settings.Gesture.IsEnableTwoFingerRotation = false;
|
||||
CheckEnableTwoFingerGestureBtnColorPrompt();
|
||||
SaveSettingsToFile();
|
||||
return;
|
||||
}
|
||||
|
||||
if (sender == ToggleSwitchEnableTwoFingerRotation)
|
||||
BoardToggleSwitchEnableTwoFingerRotation.IsOn = ToggleSwitchEnableTwoFingerRotation.IsOn;
|
||||
else
|
||||
@@ -1904,6 +1965,7 @@ namespace Ink_Canvas
|
||||
SaveSettingsToFile();
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
#region Reset
|
||||
|
||||
@@ -151,10 +151,12 @@ namespace Ink_Canvas
|
||||
}
|
||||
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
||||
|
||||
// 修复:确保从橡皮擦切换到笔时,多指手势功能能正确恢复
|
||||
|
||||
// 更新lastInkCanvasEditingMode以确保多指手势逻辑正确
|
||||
lastInkCanvasEditingMode = InkCanvasEditingMode.Ink;
|
||||
|
||||
ResetAllShapeButtonsOpacity();
|
||||
|
||||
SetCursorBasedOnEditingMode(inkCanvas);
|
||||
}
|
||||
|
||||
@@ -1987,6 +1989,38 @@ namespace Ink_Canvas
|
||||
drawingShapeMode = mode;
|
||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||
SetCursorBasedOnEditingMode(inkCanvas);
|
||||
ResetAllShapeButtonsOpacity();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重置所有几何绘制按钮的透明度状态
|
||||
/// </summary>
|
||||
private void ResetAllShapeButtonsOpacity()
|
||||
{
|
||||
try
|
||||
{
|
||||
// 重置所有几何绘制按钮的透明度为1(完全不透明)
|
||||
var buttons = new UIElement[] {
|
||||
ImageDrawLine, BoardImageDrawLine,
|
||||
ImageDrawDashedLine, BoardImageDrawDashedLine,
|
||||
ImageDrawDotLine, BoardImageDrawDotLine,
|
||||
ImageDrawArrow, BoardImageDrawArrow,
|
||||
ImageDrawParallelLine, BoardImageDrawParallelLine,
|
||||
};
|
||||
|
||||
foreach (var button in buttons)
|
||||
{
|
||||
if (button != null)
|
||||
{
|
||||
var dA = new DoubleAnimation(1, 1, new Duration(TimeSpan.FromMilliseconds(0)));
|
||||
button.BeginAnimation(OpacityProperty, dA);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
LogHelper.WriteLogToFile($"重置几何绘制按钮透明度失败: {ex.Message}", LogHelper.LogType.Error);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user