fix:issue #210
This commit is contained in:
@@ -91,6 +91,9 @@ namespace Ink_Canvas
|
|||||||
BoardGesture.BorderBrush = new SolidColorBrush(Color.FromRgb(161, 161, 170));
|
BoardGesture.BorderBrush = new SolidColorBrush(Color.FromRgb(161, 161, 170));
|
||||||
BoardGestureGeometry.Geometry = Geometry.Parse(XamlGraphicsIconGeometries.DisabledGestureIcon);
|
BoardGestureGeometry.Geometry = Geometry.Parse(XamlGraphicsIconGeometries.DisabledGestureIcon);
|
||||||
BoardGestureGeometry2.Geometry = Geometry.Parse("F0 M24,24z M0,0z");
|
BoardGestureGeometry2.Geometry = Geometry.Parse("F0 M24,24z M0,0z");
|
||||||
|
|
||||||
|
// 强制禁用所有双指手势功能
|
||||||
|
ForceDisableTwoFingerGestures();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1887,8 +1890,6 @@ namespace Ink_Canvas
|
|||||||
// 禁用高级橡皮擦系统
|
// 禁用高级橡皮擦系统
|
||||||
DisableAdvancedEraserSystem();
|
DisableAdvancedEraserSystem();
|
||||||
|
|
||||||
// 修复:从橡皮擦切换到批注模式时,退出多指书写模式
|
|
||||||
// 这解决了从橡皮擦切换为批注时被锁定为多指书写的问题
|
|
||||||
ExitMultiTouchModeIfNeeded();
|
ExitMultiTouchModeIfNeeded();
|
||||||
|
|
||||||
SetFloatingBarHighlightPosition("pen");
|
SetFloatingBarHighlightPosition("pen");
|
||||||
@@ -1897,14 +1898,20 @@ namespace Ink_Canvas
|
|||||||
bool wasInInkMode = inkCanvas.EditingMode == InkCanvasEditingMode.Ink;
|
bool wasInInkMode = inkCanvas.EditingMode == InkCanvasEditingMode.Ink;
|
||||||
bool wasHighlighter = drawingAttributes.IsHighlighter;
|
bool wasHighlighter = drawingAttributes.IsHighlighter;
|
||||||
|
|
||||||
// 禁止几何绘制模式下切换到Ink
|
if (drawingShapeMode != 0 && !isLongPressSelected)
|
||||||
if (drawingShapeMode != 0)
|
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Pen_Icon.Background == null || StackPanelCanvasControls.Visibility == Visibility.Collapsed)
|
if (Pen_Icon.Background == null || StackPanelCanvasControls.Visibility == Visibility.Collapsed)
|
||||||
{
|
{
|
||||||
|
if (isLongPressSelected)
|
||||||
|
{
|
||||||
|
drawingShapeMode = 0;
|
||||||
|
isLongPressSelected = false;
|
||||||
|
ResetAllShapeButtonsOpacity();
|
||||||
|
}
|
||||||
|
|
||||||
// 使用集中化的工具模式切换方法
|
// 使用集中化的工具模式切换方法
|
||||||
SetCurrentToolMode(InkCanvasEditingMode.Ink);
|
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
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -1787,6 +1787,18 @@ namespace Ink_Canvas
|
|||||||
private void ToggleSwitchEnableTwoFingerZoom_Toggled(object sender, RoutedEventArgs e)
|
private void ToggleSwitchEnableTwoFingerZoom_Toggled(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (!isLoaded) return;
|
if (!isLoaded) return;
|
||||||
|
|
||||||
|
// 如果多指书写模式启用,强制禁用双指手势
|
||||||
|
if (ToggleSwitchEnableMultiTouchMode.IsOn)
|
||||||
|
{
|
||||||
|
ToggleSwitchEnableTwoFingerZoom.IsOn = false;
|
||||||
|
BoardToggleSwitchEnableTwoFingerZoom.IsOn = false;
|
||||||
|
Settings.Gesture.IsEnableTwoFingerZoom = false;
|
||||||
|
CheckEnableTwoFingerGestureBtnColorPrompt();
|
||||||
|
SaveSettingsToFile();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (sender == ToggleSwitchEnableTwoFingerZoom)
|
if (sender == ToggleSwitchEnableTwoFingerZoom)
|
||||||
BoardToggleSwitchEnableTwoFingerZoom.IsOn = ToggleSwitchEnableTwoFingerZoom.IsOn;
|
BoardToggleSwitchEnableTwoFingerZoom.IsOn = ToggleSwitchEnableTwoFingerZoom.IsOn;
|
||||||
else
|
else
|
||||||
@@ -1866,6 +1878,32 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
|
|
||||||
Settings.Gesture.IsEnableMultiTouchMode = ToggleSwitchEnableMultiTouchMode.IsOn;
|
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();
|
CheckEnableTwoFingerGestureBtnColorPrompt();
|
||||||
SaveSettingsToFile();
|
SaveSettingsToFile();
|
||||||
}
|
}
|
||||||
@@ -1873,6 +1911,18 @@ namespace Ink_Canvas
|
|||||||
private void ToggleSwitchEnableTwoFingerTranslate_Toggled(object sender, RoutedEventArgs e)
|
private void ToggleSwitchEnableTwoFingerTranslate_Toggled(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (!isLoaded) return;
|
if (!isLoaded) return;
|
||||||
|
|
||||||
|
// 如果多指书写模式启用,强制禁用双指手势
|
||||||
|
if (ToggleSwitchEnableMultiTouchMode.IsOn)
|
||||||
|
{
|
||||||
|
ToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||||
|
BoardToggleSwitchEnableTwoFingerTranslate.IsOn = false;
|
||||||
|
Settings.Gesture.IsEnableTwoFingerTranslate = false;
|
||||||
|
CheckEnableTwoFingerGestureBtnColorPrompt();
|
||||||
|
SaveSettingsToFile();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (sender == ToggleSwitchEnableTwoFingerTranslate)
|
if (sender == ToggleSwitchEnableTwoFingerTranslate)
|
||||||
BoardToggleSwitchEnableTwoFingerTranslate.IsOn = ToggleSwitchEnableTwoFingerTranslate.IsOn;
|
BoardToggleSwitchEnableTwoFingerTranslate.IsOn = ToggleSwitchEnableTwoFingerTranslate.IsOn;
|
||||||
else
|
else
|
||||||
@@ -1886,6 +1936,17 @@ namespace Ink_Canvas
|
|||||||
{
|
{
|
||||||
if (!isLoaded) return;
|
if (!isLoaded) return;
|
||||||
|
|
||||||
|
// 如果多指书写模式启用,强制禁用双指手势
|
||||||
|
if (ToggleSwitchEnableMultiTouchMode.IsOn)
|
||||||
|
{
|
||||||
|
ToggleSwitchEnableTwoFingerRotation.IsOn = false;
|
||||||
|
BoardToggleSwitchEnableTwoFingerRotation.IsOn = false;
|
||||||
|
Settings.Gesture.IsEnableTwoFingerRotation = false;
|
||||||
|
CheckEnableTwoFingerGestureBtnColorPrompt();
|
||||||
|
SaveSettingsToFile();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (sender == ToggleSwitchEnableTwoFingerRotation)
|
if (sender == ToggleSwitchEnableTwoFingerRotation)
|
||||||
BoardToggleSwitchEnableTwoFingerRotation.IsOn = ToggleSwitchEnableTwoFingerRotation.IsOn;
|
BoardToggleSwitchEnableTwoFingerRotation.IsOn = ToggleSwitchEnableTwoFingerRotation.IsOn;
|
||||||
else
|
else
|
||||||
@@ -1904,6 +1965,7 @@ namespace Ink_Canvas
|
|||||||
SaveSettingsToFile();
|
SaveSettingsToFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Reset
|
#region Reset
|
||||||
|
|||||||
@@ -151,10 +151,12 @@ namespace Ink_Canvas
|
|||||||
}
|
}
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
|
||||||
|
|
||||||
// 修复:确保从橡皮擦切换到笔时,多指手势功能能正确恢复
|
|
||||||
// 更新lastInkCanvasEditingMode以确保多指手势逻辑正确
|
// 更新lastInkCanvasEditingMode以确保多指手势逻辑正确
|
||||||
lastInkCanvasEditingMode = InkCanvasEditingMode.Ink;
|
lastInkCanvasEditingMode = InkCanvasEditingMode.Ink;
|
||||||
|
|
||||||
|
ResetAllShapeButtonsOpacity();
|
||||||
|
|
||||||
SetCursorBasedOnEditingMode(inkCanvas);
|
SetCursorBasedOnEditingMode(inkCanvas);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1987,6 +1989,38 @@ namespace Ink_Canvas
|
|||||||
drawingShapeMode = mode;
|
drawingShapeMode = mode;
|
||||||
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
inkCanvas.EditingMode = InkCanvasEditingMode.None;
|
||||||
SetCursorBasedOnEditingMode(inkCanvas);
|
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>
|
/// <summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user