[update] 白板模式工具栏反馈效果,TimeMachine做部分修复

This commit is contained in:
Dubi906w 2024-08-03 21:25:44 +08:00
parent fec0f55deb
commit d83a81074a
4 changed files with 959 additions and 905 deletions

File diff suppressed because one or more lines are too long

View File

@ -4,10 +4,86 @@ using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Ink; using System.Windows.Ink;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media;
namespace Ink_Canvas { namespace Ink_Canvas {
public partial class MainWindow : Window { 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) { private void BoardChangeBackgroundColorBtn_MouseUp(object sender, RoutedEventArgs e) {
if (lastBoardSideBtnDownBorder == null) return;
BoardSideBtnMouseLeave(sender, null);
UpdateBoardBackgroundPanelDisplayStatus(); UpdateBoardBackgroundPanelDisplayStatus();
if (BoardBackgroundPopup.Visibility == Visibility.Visible) { if (BoardBackgroundPopup.Visibility == Visibility.Visible) {
AnimationsHelper.HideWithSlideAndFade(BoardBackgroundPopup); 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 || if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint ||
inkCanvas.EditingMode == InkCanvasEditingMode.EraseByStroke) { inkCanvas.EditingMode == InkCanvasEditingMode.EraseByStroke) {
if (BoardEraserSizePanel.Visibility == Visibility.Collapsed) { if (BoardEraserSizePanel.Visibility == Visibility.Collapsed) {
@ -25,59 +103,28 @@ namespace Ink_Canvas {
AnimationsHelper.HideWithSlideAndFade(BoardEraserSizePanel); AnimationsHelper.HideWithSlideAndFade(BoardEraserSizePanel);
} }
} else { } else {
forceEraser = true; EraserIcon_Click(null,null);
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");
} }
} }
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) { private void BoardEraserIconByStrokes_Click(object sender, RoutedEventArgs e) {
//if (BoardEraserByStrokes.Background.ToString() == "#FF679CF4") { //if (BoardEraserByStrokes.Background.ToString() == "#FF679CF4") {
// AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardDeleteIcon); // AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardDeleteIcon);

View File

@ -387,7 +387,7 @@ namespace Ink_Canvas {
UnFoldFloatingBar_MouseUp(null, null); UnFoldFloatingBar_MouseUp(null, null);
if (inkCanvas.EditingMode == InkCanvasEditingMode.Select) PenIcon_Click(null, null); if (SelectedMode == ICCToolsEnum.CursorMode) PenIcon_Click(null, null);
if (currentMode == 0) { if (currentMode == 0) {
LeftBottomPanelForPPTNavigation.Visibility = Visibility.Collapsed; LeftBottomPanelForPPTNavigation.Visibility = Visibility.Collapsed;
@ -746,8 +746,7 @@ namespace Ink_Canvas {
RectangleSelectionHitTestBorder.Visibility = Visibility.Collapsed; 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) if (lastBorderMouseDownObject != null && lastBorderMouseDownObject is Panel)
((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent); ((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent);
@ -842,12 +841,11 @@ namespace Ink_Canvas {
/// </summary> /// </summary>
/// <param name="sender">sender</param> /// <param name="sender">sender</param>
/// <param name="e">MouseButtonEventArgs</param> /// <param name="e">MouseButtonEventArgs</param>
private void SymbolIconSelect_MouseUp(object sender, MouseButtonEventArgs e) private void SymbolIconSelect_MouseUp(object sender, MouseButtonEventArgs e) {
{
if (lastBorderMouseDownObject != null && lastBorderMouseDownObject is Panel) if (lastBorderMouseDownObject != null && lastBorderMouseDownObject is Panel)
((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent); ((Panel)lastBorderMouseDownObject).Background = new SolidColorBrush(Colors.Transparent);
if (sender == SymbolIconSelect && lastBorderMouseDownObject != SymbolIconSelect) return; if (sender == SymbolIconSelect && lastBorderMouseDownObject != SymbolIconSelect) return;
BtnSelect_Click(null, null); BtnSelect_Click(null, null);
HideSubPanels("select"); HideSubPanels("select");

View File

@ -21,7 +21,7 @@ namespace Ink_Canvas {
} }
private CommitReason _currentCommitType = CommitReason.UserInput; private CommitReason _currentCommitType = CommitReason.UserInput;
private bool IsEraseByPoint => inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint; private bool IsEraseByPoint => SelectedMode == ICCToolsEnum.EraseByGeometryMode;
private StrokeCollection ReplacedStroke; private StrokeCollection ReplacedStroke;
private StrokeCollection AddedStroke; private StrokeCollection AddedStroke;
private StrokeCollection CuboidStrokeCollection; private StrokeCollection CuboidStrokeCollection;