From d83a81074a0e6ae5c3d93c42df199c739850595b Mon Sep 17 00:00:00 2001 From: kriastans Date: Sat, 3 Aug 2024 21:25:44 +0800 Subject: [PATCH] =?UTF-8?q?[update]=20=E7=99=BD=E6=9D=BF=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E6=A0=8F=E5=8F=8D=E9=A6=88=E6=95=88=E6=9E=9C?= =?UTF-8?q?=EF=BC=8CTimeMachine=E5=81=9A=E9=83=A8=E5=88=86=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- InkCanvasForClass/MainWindow.xaml | 1703 +++++++++-------- .../MainWindow_cs/MW_BoardIcons.cs | 149 +- .../MainWindow_cs/MW_FloatingBarIcons.cs | 10 +- .../MainWindow_cs/MW_TimeMachine.cs | 2 +- 4 files changed, 959 insertions(+), 905 deletions(-) diff --git a/InkCanvasForClass/MainWindow.xaml b/InkCanvasForClass/MainWindow.xaml index bda1577..c95972f 100644 --- a/InkCanvasForClass/MainWindow.xaml +++ b/InkCanvasForClass/MainWindow.xaml @@ -650,65 +650,66 @@ HorizontalAlignment="Center" VerticalAlignment="Bottom"> - - + + - - + - - - - - + + + + - - - - - - - + + + + + - - - - + + + - - + - - + - - - - - + + + + - - - + + + + + + + + + + + - - - + + + + + + + + + + + - - - + + + + + + + + + + + - - - - - - - - + + + + - - + - - - - - + + + + - - - - - - + + + + + - - - - + + + - - + - - + - - - - - - - + + + + + + - - - + - - - - + + - - - + + - - + - - - - + + - - - + + - - + - - - - + + - - - - + + + - - - + - - - - + + - - - + + - - + - - - - + + - - - + + - - + - - - - + + - - + + + - - - - + + - - - + - - - - + + - - - + + - - - - + + + - - - - - + + + + - - - - - - - + + + + + - - - - + + - - - - - + + + - - + - - + - - - - - + + + + - - - - - - - + + + + + - - - - + + - - - - + + + + - - - - - - - - + + + + + + + + + + - - + + - - + - - - - - + + + + - - - - - - + + + + + - - - - - + + + + - - - - - + + + + - - - - - - + + + + + - - - - - + + + + - - - - - - - - - + + + + + + + + - - + - - - - - + - - - + - - - + - - - - + + - - + - - - + - - - + - - - - + + + - - - + - - + - - - + + - - - + - - - + - - - - - - + + + - - - - - + + + - - - + + - - + - - - - + - - - - + + - - - - - + + - - - - - + + - - - - - + + - - - - - - - + + + + - - - - - - - + + - - - - - + + - - - - - + + - - - - - + + - - - - - - - - - - - + + + + + + + + - - - + + - - + - - - - + - - + - - - + + - - - - - - + + + - - + - - + - - - + + - - - - - - + + + - - + - - + - - - + + - - - - - - + + + - - + - - + - - - + + - - - - - - + + + - - + - - + - - - + + - - - - - - - - + + + + + - - - - + - - + - - - + + - - - - - - + + + - - + - - + - - - + + - - - - - - + + + - - + - - + - - - + + - - - - - - + + + - - + - - + - - - + + - - - - - - + + + - - + - - + - - - + + - - - - - - - - - - - - - - + + + + + + + + + + + + - - - + + - - + + - - - - - + + + + - - - - - - + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + - - + - - + - - - + + - - + + + - - - - + - - - + - - + - - - - + + - - + - - - + - - + - - - - - - + - - - - - + + + + + + + + - - + - - - - + + - - + + - - - - - + + + + - - - - - - - - + + + + + - - - - + + + - - - + + - - + - - + - + - - - - - - - - - + - - - - - - - + - - - - - - - - + - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + - - - - - + - - + + - - - - + - - - - - + + + + - - - - - - + + + + + - - - + + - - + - - - - - + + + + - - - - - - + + + + + - + + + + + - + diff --git a/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs b/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs index bf935b8..985ea0e 100644 --- a/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs +++ b/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs @@ -4,10 +4,86 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Ink; using System.Windows.Input; +using System.Windows.Media; namespace Ink_Canvas { public partial class MainWindow : Window { + + private Border lastBoardToolBtnDownBorder = null; + private Border lastBoardSideBtnDownBorder = null; + + private void BoardToolBtnMouseDown(object sender, MouseButtonEventArgs e) { + if (lastBoardToolBtnDownBorder != null) return; + lastBoardToolBtnDownBorder = (Border)sender; + if (lastBoardToolBtnDownBorder.Name == "BoardPen") { + BoardMouseFeedbakBorder.Margin = new Thickness(60, 0, 0, 0); + ((Border)BoardMouseFeedbakBorder.Child).CornerRadius = new CornerRadius(0); + } else if (lastBoardToolBtnDownBorder.Name == "BoardSelect") { + BoardMouseFeedbakBorder.Margin = new Thickness(0); + ((Border)BoardMouseFeedbakBorder.Child).CornerRadius = new CornerRadius(4.5,0,0,4.5); + } else if (lastBoardToolBtnDownBorder.Name == "BoardEraser") { + BoardMouseFeedbakBorder.Margin = new Thickness(120, 0, 0, 0); + ((Border)BoardMouseFeedbakBorder.Child).CornerRadius = new CornerRadius(0); + } else if (lastBoardToolBtnDownBorder.Name == "BoardGeometry") { + BoardMouseFeedbakBorder.Margin = new Thickness(180, 0, 0, 0); + ((Border)BoardMouseFeedbakBorder.Child).CornerRadius = new CornerRadius(0); + } else if (lastBoardToolBtnDownBorder.Name == "BoardUndo") { + BoardMouseFeedbakBorder.Margin = new Thickness(240, 0, 0, 0); + ((Border)BoardMouseFeedbakBorder.Child).CornerRadius = new CornerRadius(0); + } else if (lastBoardToolBtnDownBorder.Name == "BoardRedo") { + BoardMouseFeedbakBorder.Margin = new Thickness(300, 0, 0, 0); + ((Border)BoardMouseFeedbakBorder.Child).CornerRadius = new CornerRadius(0,4.5,4.5,0); + } + BoardMouseFeedbakBorder.Visibility = Visibility.Visible; + } + + private void BoardSideBtnMouseDown(object sender, MouseButtonEventArgs e) { + if (lastBoardSideBtnDownBorder != null) return; + lastBoardSideBtnDownBorder = (Border)sender; + if (lastBoardSideBtnDownBorder.Name == "BoardBackground") { + BoardSideBtnMouseFeedbakBorder.Margin = new Thickness(60, 0, 0, 0); + ((Border)BoardSideBtnMouseFeedbakBorder.Child).CornerRadius = new CornerRadius(0,4.5,4.5,0); + BoardSideBtnMouseFeedbakBorder.Visibility = Visibility.Visible; + } else if (lastBoardSideBtnDownBorder.Name == "BoardGesture") { + BoardSideBtnMouseFeedbakBorder.Margin = new Thickness(0); + ((Border)BoardSideBtnMouseFeedbakBorder.Child).CornerRadius = new CornerRadius(4.5,0,0,4.5); + BoardSideBtnMouseFeedbakBorder.Visibility = Visibility.Visible; + } + } + + private void BoardToolBtnMouseLeave(object sender, MouseEventArgs e) { + if (lastBoardToolBtnDownBorder == null) return; + lastBoardToolBtnDownBorder = null; + BoardMouseFeedbakBorder.Visibility = Visibility.Collapsed; + } + + private void BoardSideBtnMouseLeave(object sender, MouseEventArgs e) { + if (lastBoardSideBtnDownBorder == null) return; + lastBoardSideBtnDownBorder = null; + BoardSideBtnMouseFeedbakBorder.Visibility = Visibility.Collapsed; + } + + private void BoardPenMouseUp(object sender, MouseButtonEventArgs e) { + if (lastBoardToolBtnDownBorder == null) return; + BoardToolBtnMouseLeave(sender, null); + PenIcon_Click(null,null); + } + + private void BoardSelectMouseUp(object sender, MouseButtonEventArgs e) { + if (lastBoardToolBtnDownBorder == null) return; + BoardToolBtnMouseLeave(sender, null); + SymbolIconSelect_MouseUp(null,null); + } + + private void BoardGestureMouseUp(object sender, MouseButtonEventArgs e) { + if (lastBoardSideBtnDownBorder == null) return; + BoardSideBtnMouseLeave(sender, null); + TwoFingerGestureBorder_MouseUp(null, null); + } + private void BoardChangeBackgroundColorBtn_MouseUp(object sender, RoutedEventArgs e) { + if (lastBoardSideBtnDownBorder == null) return; + BoardSideBtnMouseLeave(sender, null); UpdateBoardBackgroundPanelDisplayStatus(); if (BoardBackgroundPopup.Visibility == Visibility.Visible) { AnimationsHelper.HideWithSlideAndFade(BoardBackgroundPopup); @@ -16,7 +92,9 @@ namespace Ink_Canvas { } } - private void BoardEraserIcon_Click(object sender, RoutedEventArgs e) { + private void BoardEraserMouseUp(object sender, RoutedEventArgs e) { + if (lastBoardToolBtnDownBorder == null) return; + BoardToolBtnMouseLeave(sender, null); if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint || inkCanvas.EditingMode == InkCanvasEditingMode.EraseByStroke) { if (BoardEraserSizePanel.Visibility == Visibility.Collapsed) { @@ -25,59 +103,28 @@ namespace Ink_Canvas { AnimationsHelper.HideWithSlideAndFade(BoardEraserSizePanel); } } else { - forceEraser = true; - forcePointEraser = true; - double k = 1; - if (Settings.Canvas.EraserShapeType == 0) { - switch (BoardComboBoxEraserSize.SelectedIndex) - { - case 0: - k = 0.5; - break; - case 1: - k = 0.8; - break; - case 3: - k = 1.25; - break; - case 4: - k = 1.8; - break; - } - inkCanvas.EraserShape = new EllipseStylusShape(k * 90, k * 90); - } else if (Settings.Canvas.EraserShapeType == 1) { - switch (BoardComboBoxEraserSize.SelectedIndex) - { - case 0: - k = 0.7; - break; - case 1: - k = 0.9; - break; - case 3: - k = 1.2; - break; - case 4: - k = 1.6; - break; - } - inkCanvas.EraserShape = new RectangleStylusShape(k * 90 * 0.6, k * 90); - } - - // update tool selection - SelectedMode = ICCToolsEnum.EraseByGeometryMode; - ForceUpdateToolSelection(null); - - inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint; - drawingShapeMode = 0; - - inkCanvas_EditingModeChanged(inkCanvas, null); - CancelSingleFingerDragMode(); - - HideSubPanels("eraser"); + EraserIcon_Click(null,null); } } + private void BoardGeometryMouseUp(object sender, MouseButtonEventArgs e) { + if (lastBoardToolBtnDownBorder == null) return; + BoardToolBtnMouseLeave(sender, null); + ImageDrawShape_MouseUp(null,null); + } + + private void BoardUndoMouseUp(object sender, MouseButtonEventArgs e) { + if (lastBoardToolBtnDownBorder == null) return; + BoardToolBtnMouseLeave(sender, null); + SymbolIconUndo_MouseUp(null,null); + } + + private void BoardRedoMouseUp(object sender, MouseButtonEventArgs e) { + if (lastBoardToolBtnDownBorder == null) return; + BoardToolBtnMouseLeave(sender, null); + SymbolIconRedo_MouseUp(null,null); + } + private void BoardEraserIconByStrokes_Click(object sender, RoutedEventArgs e) { //if (BoardEraserByStrokes.Background.ToString() == "#FF679CF4") { // AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardDeleteIcon); diff --git a/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs b/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs index 65bc95e..0b42d61 100644 --- a/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs @@ -387,7 +387,7 @@ namespace Ink_Canvas { UnFoldFloatingBar_MouseUp(null, null); - if (inkCanvas.EditingMode == InkCanvasEditingMode.Select) PenIcon_Click(null, null); + if (SelectedMode == ICCToolsEnum.CursorMode) PenIcon_Click(null, null); if (currentMode == 0) { LeftBottomPanelForPPTNavigation.Visibility = Visibility.Collapsed; @@ -746,8 +746,7 @@ namespace Ink_Canvas { RectangleSelectionHitTestBorder.Visibility = Visibility.Collapsed; } - private void PenIcon_Click(object sender, RoutedEventArgs e) - { + private void PenIcon_Click(object sender, RoutedEventArgs e) { if (lastBorderMouseDownObject != null && lastBorderMouseDownObject is Panel) ((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent); @@ -842,12 +841,11 @@ namespace Ink_Canvas { /// /// sender /// MouseButtonEventArgs - private void SymbolIconSelect_MouseUp(object sender, MouseButtonEventArgs e) - { - + private void SymbolIconSelect_MouseUp(object sender, MouseButtonEventArgs e) { if (lastBorderMouseDownObject != null && lastBorderMouseDownObject is Panel) ((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent); if (sender == SymbolIconSelect && lastBorderMouseDownObject != SymbolIconSelect) return; + BtnSelect_Click(null, null); HideSubPanels("select"); diff --git a/InkCanvasForClass/MainWindow_cs/MW_TimeMachine.cs b/InkCanvasForClass/MainWindow_cs/MW_TimeMachine.cs index b8adae3..86d51a9 100644 --- a/InkCanvasForClass/MainWindow_cs/MW_TimeMachine.cs +++ b/InkCanvasForClass/MainWindow_cs/MW_TimeMachine.cs @@ -21,7 +21,7 @@ namespace Ink_Canvas { } private CommitReason _currentCommitType = CommitReason.UserInput; - private bool IsEraseByPoint => inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint; + private bool IsEraseByPoint => SelectedMode == ICCToolsEnum.EraseByGeometryMode; private StrokeCollection ReplacedStroke; private StrokeCollection AddedStroke; private StrokeCollection CuboidStrokeCollection;