Files
2025-08-23 21:39:21 +08:00

156 lines
7.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using InkCanvasForClass.IccInkCanvas.Settings;
namespace InkCanvasForClass.IccInkCanvas.Demo {
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window {
private TimeMachineV2 tm = new TimeMachineV2();
public MainWindow() {
InitializeComponent();
RegisterEventsForBoardSettings();
UpdateBoardSettingsTextBlock();
IccBoard.CurrentPageChanged += (sender, args) => {
Trace.WriteLine("Page Counter Updated");
BoardPageTextBlock.Text = $"{IccBoard.CurrentPage+1}/{IccBoard.PagesCount} IsLast:{IccBoard.IsCurrentLastPage} IsFirst:{IccBoard.IsCurrentFirstPage}";
};
IccBoard.UndoRedoStateChanged += (sender, args) => {
TimeMachineTextBlock.Text = $"CurrentPageHistoriesCount:{IccBoard.CurrentPageHistoriesCount} CanUndo:{IccBoard.CanUndo} CanRedo:{IccBoard.CanRedo}";
};
TimeMachineV2Status.Text = $"Current: {tm.CurrentIndex} Count: {tm.ActionsCount}";
tm.UndoRedoStateChanged += (_, __) => {
TimeMachineV2Status.Text = $"Current: {tm.CurrentIndex} Count: {tm.ActionsCount}";
};
}
private void UpdateBoardSettingsTextBlock() {
BoardSettingsTextBlock.Text =
$@"Width:{IccBoard.BoardSettings.NibWidth} Height:{IccBoard.BoardSettings.NibHeight} Color:{IccBoard.BoardSettings.NibColor.ToString()}";
}
private void RegisterEventsForBoardSettings() {
IccBoard.BoardSettings.NibWidthChanged += (s, e) => UpdateBoardSettingsTextBlock();
IccBoard.BoardSettings.NibHeightChanged += (s, e) => UpdateBoardSettingsTextBlock();
IccBoard.BoardSettings.NibColorChanged += (s, e) => UpdateBoardSettingsTextBlock();
}
private void EditingModeChangeToNone_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.EditingMode = EditingMode.NoneWithHitTest;
}
private void EditingModeChangeToWriting_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.EditingMode = EditingMode.Writing;
}
private void EditingModeChangeToGeometryErasing_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.EditingMode = EditingMode.GeometryErasing;
}
private void EditingModeChangeToAreaErasing_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.EditingMode = EditingMode.AreaErasing;
}
private void EditingModeChangeToRoamingMode_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.EditingMode = EditingMode.RoamingMode;
}
private void BoardSettingsNibSizeChangeTo2_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.NibWidth = 2;
IccBoard.BoardSettings.NibHeight = 2;
}
private void BoardSettingsNibSizeChangeTo4_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.NibWidth = 4;
IccBoard.BoardSettings.NibHeight = 4;
}
private void BoardSettingsNibSizeChangeTo6_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.NibWidth = 6;
IccBoard.BoardSettings.NibHeight = 6;
}
private void BoardSettingsNibColorChangeToRed_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.NibColor = Color.FromRgb(220, 38, 38);
}
private void BoardSettingsNibColorChangeToBlue_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.NibColor = Color.FromRgb(37, 99, 235);
}
private void BoardSettingsNibColorChangeToGreen_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.NibColor = Color.FromRgb(34, 197, 94);
}
private void BoardSettingsNibColorChangeToBlack_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.NibColor = Colors.Black;
}
private void BoardSettingsStrokeNibStyleChangeToSolid_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.StrokeNibStyle = StrokeNibStyle.Solid;
}
private void BoardSettingsStrokeNibStyleChangeToBeautiful_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.StrokeNibStyle = StrokeNibStyle.Beautiful;
}
private void AddPage_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.AddPage();
}
private void SwitchToPreviousPage_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.GoToPreviousPage();
}
private void SwitchToNextPage_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.GoToNextPage();
}
private async void RemoveCurrentPage_ButtonClick(object sender, RoutedEventArgs e) {
await IccBoard.RemovePage();
}
private void BoardSettingsEraserSizeChangeTo16_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.EraserSize = 16;
}
private void BoardSettingsEraserSizeChangeTo32_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.EraserSize = 32;
}
private void BoardSettingsEraserSizeChangeTo48_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.EraserSize = 48;
}
private void BoardSettingsEraserSizeChangeTo64_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.EraserSize = 64;
}
private void BoardSettingsEraserTypeChangeToRectangle_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.EraserType = EraserType.Rectangle;
}
private void BoardSettingsEraserTypeChangeToEllipse_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.BoardSettings.EraserType = EraserType.Ellipse;
}
private void Undo_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.Undo();
}
private void Redo_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.Redo();
}
private void Undo2_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.Undo(2);
}
private void Redo2_ButtonClick(object sender, RoutedEventArgs e) {
IccBoard.Redo(2);
}
private void PushTestAction_TimeMachineV2_ButtonClick(object sender, RoutedEventArgs e) {
tm.PushTestAction();
}
private void Undo_TimeMachineV2_ButtonClick(object sender, RoutedEventArgs e) {
tm.Undo(false);
}
private void Redo_TimeMachineV2_ButtonClick(object sender, RoutedEventArgs e) {
tm.Redo();
}
}
}