[update] 白板多背景色初步可用,修复白板模式下PPT放映的问题,墨迹重播优化,其他微型优化和修复

This commit is contained in:
Dubi906w 2024-07-12 21:33:36 +08:00
parent 693528d679
commit 82068dac5e
10 changed files with 892 additions and 522 deletions

File diff suppressed because it is too large Load Diff

View File

@ -201,6 +201,7 @@ namespace Ink_Canvas {
BtnWhiteBoardSwitchPrevious.IsEnabled = CurrentWhiteboardIndex != 1;
BorderInkReplayToolBox.Visibility = Visibility.Collapsed;
BoardBackgroundPopup.Visibility = Visibility.Collapsed;
// 提前加载IA库优化第一笔等待时间
if (Settings.InkToShape.IsInkToShapeEnabled && !Environment.Is64BitProcess) {

View File

@ -1,5 +1,6 @@
using Ink_Canvas.Helpers;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
@ -19,10 +20,95 @@ namespace Ink_Canvas {
private bool[] whiteboadLastModeIsRedo = new bool[101];
private StrokeCollection lastTouchDownStrokeCollection = new StrokeCollection();
private int CurrentWhiteboardIndex = 1;
private int WhiteboardTotalCount = 1;
public int CurrentWhiteboardIndex = 1;
public int WhiteboardTotalCount = 1;
private TimeMachineHistory[][] TimeMachineHistories = new TimeMachineHistory[101][]; //最多99页0用来存储非白板时的墨迹以便还原
public Color[] BoardBackgroundColors = new Color[6] {
Color.FromRgb(39, 39, 42),
Color.FromRgb(23, 42, 37),
Color.FromRgb(234, 235, 237),
Color.FromRgb(15, 23, 42),
Color.FromRgb(181, 230, 181),
Color.FromRgb(0, 0, 0)
};
public class BoardPageSettings {
public BlackboardBackgroundColorEnum BackgroundColor { get; set; } = BlackboardBackgroundColorEnum.White;
public BlackboardBackgroundPatternEnum BackgroundPattern { get; set; } = BlackboardBackgroundPatternEnum.None;
}
public List<BoardPageSettings> BoardPagesSettingsList = new List<BoardPageSettings>() {
new BoardPageSettings()
};
#region Board Background
private void ChangeBoardBackground(int id) {
BoardPagesSettingsList[CurrentWhiteboardIndex - 1].BackgroundColor = (BlackboardBackgroundColorEnum)id;
var bgC = BoardPagesSettingsList[CurrentWhiteboardIndex - 1].BackgroundColor;
if (bgC == BlackboardBackgroundColorEnum.BlackBoardGreen
|| bgC == BlackboardBackgroundColorEnum.BlueBlack
|| bgC == BlackboardBackgroundColorEnum.GrayBlack
|| bgC == BlackboardBackgroundColorEnum.RealBlack)
{
if (inkColor == 0) lastBoardInkColor = 5;
}
else
{
if (inkColor == 5) lastBoardInkColor = 0;
}
CheckColorTheme(true);
UpdateBoardBackgroundPanelDisplayStatus();
}
private void BoardBackgroundColor1Border_MouseUp(object sender, MouseButtonEventArgs e) {
ChangeBoardBackground(0);
}
private void BoardBackgroundColor2Border_MouseUp(object sender, MouseButtonEventArgs e) {
ChangeBoardBackground(1);
}
private void BoardBackgroundColor3Border_MouseUp(object sender, MouseButtonEventArgs e) {
ChangeBoardBackground(2);
}
private void BoardBackgroundColor4Border_MouseUp(object sender, MouseButtonEventArgs e) {
ChangeBoardBackground(3);
}
private void BoardBackgroundColor5Border_MouseUp(object sender, MouseButtonEventArgs e) {
ChangeBoardBackground(4);
}
private void BoardBackgroundColor6Border_MouseUp(object sender, MouseButtonEventArgs e)
{
ChangeBoardBackground(5);
}
private void UpdateBoardBackgroundPanelDisplayStatus() {
BoardBackgroundColor1Checkbox.Visibility = Visibility.Collapsed;
BoardBackgroundColor2Checkbox.Visibility = Visibility.Collapsed;
BoardBackgroundColor3Checkbox.Visibility = Visibility.Collapsed;
BoardBackgroundColor4Checkbox.Visibility = Visibility.Collapsed;
BoardBackgroundColor5Checkbox.Visibility = Visibility.Collapsed;
BoardBackgroundColor6Checkbox.Visibility = Visibility.Collapsed;
if (currentMode == 1) {
var index = CurrentWhiteboardIndex - 1;
var bg = BoardPagesSettingsList[index];
if (bg.BackgroundColor == (BlackboardBackgroundColorEnum)0) BoardBackgroundColor1Checkbox.Visibility = Visibility.Visible;
else if (bg.BackgroundColor == (BlackboardBackgroundColorEnum)1) BoardBackgroundColor2Checkbox.Visibility = Visibility.Visible;
else if (bg.BackgroundColor == (BlackboardBackgroundColorEnum)2) BoardBackgroundColor3Checkbox.Visibility = Visibility.Visible;
else if (bg.BackgroundColor == (BlackboardBackgroundColorEnum)3) BoardBackgroundColor4Checkbox.Visibility = Visibility.Visible;
else if (bg.BackgroundColor == (BlackboardBackgroundColorEnum)4) BoardBackgroundColor5Checkbox.Visibility = Visibility.Visible;
else if (bg.BackgroundColor == (BlackboardBackgroundColorEnum)5) BoardBackgroundColor6Checkbox.Visibility = Visibility.Visible;
}
}
#endregion
private void SaveStrokes(bool isBackupMain = false) {
if (isBackupMain) {
var timeMachineHistory = timeMachine.ExportTimeMachineHistory();

View File

@ -8,17 +8,11 @@ using System.Windows.Input;
namespace Ink_Canvas {
public partial class MainWindow : Window {
private void BoardChangeBackgroundColorBtn_MouseUp(object sender, RoutedEventArgs e) {
if (!isLoaded) return;
Settings.Canvas.UsingWhiteboard = !Settings.Canvas.UsingWhiteboard;
SaveSettingsToFile();
if (Settings.Canvas.UsingWhiteboard) {
if (inkColor == 5) lastBoardInkColor = 0;
if (BoardBackgroundPopup.Visibility == Visibility.Visible) {
AnimationsHelper.HideWithSlideAndFade(BoardBackgroundPopup);
} else {
AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardBackgroundPopup);
}
else {
if (inkColor == 0) lastBoardInkColor = 5;
}
CheckColorTheme(true);
}
private void BoardEraserIcon_Click(object sender, RoutedEventArgs e) {

View File

@ -1,6 +1,7 @@
using Ink_Canvas.Helpers;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -69,19 +70,21 @@ namespace Ink_Canvas {
private void CheckColorTheme(bool changeColorTheme = false) {
if (changeColorTheme)
if (currentMode != 0) {
if (Settings.Canvas.UsingWhiteboard) {
GridBackgroundCover.Background = new SolidColorBrush(Color.FromRgb(234, 235, 237));
WaterMarkTime.Foreground = new SolidColorBrush(Color.FromRgb(22, 41, 36));
WaterMarkDate.Foreground = new SolidColorBrush(Color.FromRgb(22, 41, 36));
BlackBoardWaterMark.Foreground = new SolidColorBrush(Color.FromRgb(22, 41, 36));
isUselightThemeColor = false;
}
else {
GridBackgroundCover.Background = new SolidColorBrush(Color.FromRgb(22, 41, 36));
var bgC = BoardPagesSettingsList[CurrentWhiteboardIndex - 1].BackgroundColor;
GridBackgroundCover.Background = new SolidColorBrush(BoardBackgroundColors[(int)bgC]);
if (bgC == BlackboardBackgroundColorEnum.BlackBoardGreen
|| bgC == BlackboardBackgroundColorEnum.BlueBlack
|| bgC == BlackboardBackgroundColorEnum.GrayBlack
|| bgC == BlackboardBackgroundColorEnum.RealBlack) {
WaterMarkTime.Foreground = new SolidColorBrush(Color.FromRgb(234, 235, 237));
WaterMarkDate.Foreground = new SolidColorBrush(Color.FromRgb(234, 235, 237));
BlackBoardWaterMark.Foreground = new SolidColorBrush(Color.FromRgb(234, 235, 237));
isUselightThemeColor = true;
} else {
WaterMarkTime.Foreground = new SolidColorBrush(Color.FromRgb(22, 22,22));
WaterMarkDate.Foreground = new SolidColorBrush(Color.FromRgb(22, 22, 22));
BlackBoardWaterMark.Foreground = new SolidColorBrush(Color.FromRgb(22, 22, 22));
isUselightThemeColor = false;
}
}

View File

@ -45,6 +45,7 @@ namespace Ink_Canvas {
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
AnimationsHelper.HideWithSlideAndFade(TwoFingerGestureBorder);
AnimationsHelper.HideWithSlideAndFade(BoardTwoFingerGestureBorder);
AnimationsHelper.HideWithSlideAndFade(BoardBackgroundPopup);
}
else {
AnimationsHelper.HideWithSlideAndFade(EraserSizePanel);
@ -59,6 +60,7 @@ namespace Ink_Canvas {
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
AnimationsHelper.ShowWithSlideFromBottomAndFade(TwoFingerGestureBorder);
AnimationsHelper.ShowWithSlideFromBottomAndFade(BoardTwoFingerGestureBorder);
AnimationsHelper.HideWithSlideAndFade(BoardBackgroundPopup);
}
}
@ -209,6 +211,7 @@ namespace Ink_Canvas {
BorderSettings.Visibility = Visibility.Collapsed;
BoardBorderLeftPageListView.Visibility = Visibility.Collapsed;
BoardBorderRightPageListView.Visibility = Visibility.Collapsed;
BoardBackgroundPopup.Visibility = Visibility.Collapsed;
}
/// <summary>
@ -280,6 +283,7 @@ namespace Ink_Canvas {
AnimationsHelper.HideWithSlideAndFade(BorderDrawShape);
AnimationsHelper.HideWithSlideAndFade(BoardBorderLeftPageListView);
AnimationsHelper.HideWithSlideAndFade(BoardBorderRightPageListView);
AnimationsHelper.HideWithSlideAndFade(BoardBackgroundPopup);
if (BorderSettings.Visibility == Visibility.Visible) {
SettingsOverlay.IsHitTestVisible = false;
@ -795,6 +799,10 @@ namespace Ink_Canvas {
private void GridInkReplayButton_MouseUp(object sender, MouseButtonEventArgs e) {
if (lastBorderMouseDownObject != sender) return;
if (inkCanvas.Strokes.Count == 0) {
HideSubPanels();
return;
};
AnimationsHelper.HideWithSlideAndFade(BorderTools);
AnimationsHelper.HideWithSlideAndFade(BoardBorderTools);
@ -1750,14 +1758,13 @@ namespace Ink_Canvas {
ThemeManager.Current.ApplicationTheme = ApplicationTheme.Light;
}
if (Settings.Canvas.UsingWhiteboard)
{
BtnColorBlack_Click(null, null);
}
else
{
var bgC = BoardPagesSettingsList[CurrentWhiteboardIndex - 1].BackgroundColor;
if (bgC == BlackboardBackgroundColorEnum.BlackBoardGreen
|| bgC == BlackboardBackgroundColorEnum.BlueBlack
|| bgC == BlackboardBackgroundColorEnum.GrayBlack
|| bgC == BlackboardBackgroundColorEnum.RealBlack)
BtnColorWhite_Click(null, null);
}
else BtnColorBlack_Click(null, null);
StackPanelPPTButtons.Visibility = Visibility.Collapsed;
Topmost = false;

View File

@ -612,20 +612,7 @@ namespace Ink_Canvas {
ViewBoxStackPanelMain.Margin = new Thickness(10, 10, 10, 55);
if (currentMode != 0) {
//GridBackgroundCover.Visibility = Visibility.Collapsed;
//AnimationsHelper.HideWithSlideAndFade(BlackboardLeftSide);
//AnimationsHelper.HideWithSlideAndFade(BlackboardCenterSide);
//AnimationsHelper.HideWithSlideAndFade(BlackboardRightSide);
//SaveStrokes();
//ClearStrokes(true);
//RestoreStrokes(true);
//BtnSwitch.Content = BtnSwitchTheme.Content.ToString() == "浅色" ? "黑板" : "白板";
//StackPanelPPTButtons.Visibility = Visibility.Visible;
CloseWhiteboardImmediately();
currentMode = 0;
ImageBlackboard_MouseUp(null,null);
}
ClearStrokes(true);

View File

@ -886,6 +886,45 @@ namespace Ink_Canvas {
SaveSettingsToFile();
}
private void ComboBoxBlackboardBackgroundColor_SelectionChanged(object sender, SelectionChangedEventArgs e) {
if (!isLoaded) return;
Settings.Canvas.BlackboardBackgroundColor = (BlackboardBackgroundColorEnum)ComboBoxBlackboardBackgroundColor.SelectedIndex;
SaveSettingsToFile();
}
private void ComboBoxBlackboardBackgroundPattern_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!isLoaded) return;
Settings.Canvas.BlackboardBackgroundPattern = (BlackboardBackgroundPatternEnum)ComboBoxBlackboardBackgroundPattern.SelectedIndex;
SaveSettingsToFile();
}
private void ToggleSwitchUseDefaultBackgroundColorForEveryNewAddedBlackboardPage_Toggled(object sender,
RoutedEventArgs e) {
if (!isLoaded) return;
Settings.Canvas.UseDefaultBackgroundColorForEveryNewAddedBlackboardPage =
ToggleSwitchUseDefaultBackgroundColorForEveryNewAddedBlackboardPage.IsOn;
SaveSettingsToFile();
}
private void ToggleSwitchUseDefaultBackgroundPatternForEveryNewAddedBlackboardPage_Toggled(object sender,
RoutedEventArgs e)
{
if (!isLoaded) return;
Settings.Canvas.UseDefaultBackgroundPatternForEveryNewAddedBlackboardPage =
ToggleSwitchUseDefaultBackgroundPatternForEveryNewAddedBlackboardPage.IsOn;
SaveSettingsToFile();
}
private void ToggleSwitchIsEnableAutoConvertInkColorWhenBackgroundChanged_Toggled(object sender,
RoutedEventArgs e)
{
if (!isLoaded) return;
Settings.Canvas.IsEnableAutoConvertInkColorWhenBackgroundChanged =
ToggleSwitchIsEnableAutoConvertInkColorWhenBackgroundChanged.IsOn;
SaveSettingsToFile();
}
#endregion
#region Automation
@ -1513,6 +1552,11 @@ namespace Ink_Canvas {
Settings.Canvas.FitToCurve = true;
Settings.Canvas.UsingWhiteboard = false;
Settings.Canvas.HyperbolaAsymptoteOption = 0;
Settings.Canvas.BlackboardBackgroundColor = BlackboardBackgroundColorEnum.White;
Settings.Canvas.BlackboardBackgroundPattern = BlackboardBackgroundPatternEnum.None;
Settings.Canvas.IsEnableAutoConvertInkColorWhenBackgroundChanged = false;
Settings.Canvas.UseDefaultBackgroundColorForEveryNewAddedBlackboardPage = false;
Settings.Canvas.UseDefaultBackgroundPatternForEveryNewAddedBlackboardPage = false;
Settings.Gesture.AutoSwitchTwoFingerGesture = true;
Settings.Gesture.IsEnableTwoFingerTranslate = true;

View File

@ -435,19 +435,25 @@ namespace Ink_Canvas {
ComboBoxHyperbolaAsymptoteOption.SelectedIndex = (int)Settings.Canvas.HyperbolaAsymptoteOption;
if (Settings.Canvas.UsingWhiteboard) {
GridBackgroundCover.Background = new SolidColorBrush(Color.FromRgb(234, 235, 237));
WaterMarkTime.Foreground = new SolidColorBrush(Color.FromRgb(22, 41, 36));
WaterMarkDate.Foreground = new SolidColorBrush(Color.FromRgb(22, 41, 36));
BlackBoardWaterMark.Foreground = new SolidColorBrush(Color.FromRgb(22, 41, 36));
isUselightThemeColor = false;
} else {
GridBackgroundCover.Background = new SolidColorBrush(Color.FromRgb(22, 41, 36));
var bgC = BoardPagesSettingsList[CurrentWhiteboardIndex - 1].BackgroundColor;
GridBackgroundCover.Background = new SolidColorBrush(BoardBackgroundColors[(int)bgC]);
if (bgC == BlackboardBackgroundColorEnum.BlackBoardGreen
|| bgC == BlackboardBackgroundColorEnum.BlueBlack
|| bgC == BlackboardBackgroundColorEnum.GrayBlack
|| bgC == BlackboardBackgroundColorEnum.RealBlack)
{
WaterMarkTime.Foreground = new SolidColorBrush(Color.FromRgb(234, 235, 237));
WaterMarkDate.Foreground = new SolidColorBrush(Color.FromRgb(234, 235, 237));
BlackBoardWaterMark.Foreground = new SolidColorBrush(Color.FromRgb(234, 235, 237));
isUselightThemeColor = true;
}
else
{
WaterMarkTime.Foreground = new SolidColorBrush(Color.FromRgb(22, 22, 22));
WaterMarkDate.Foreground = new SolidColorBrush(Color.FromRgb(22, 22, 22));
BlackBoardWaterMark.Foreground = new SolidColorBrush(Color.FromRgb(22, 22, 22));
isUselightThemeColor = false;
}
if (Settings.Canvas.IsShowCursor) {
ToggleSwitchShowCursor.IsOn = true;
@ -523,6 +529,20 @@ namespace Ink_Canvas {
ToggleSwitchFitToCurve.IsOn = false;
drawingAttributes.FitToCurve = false;
}
ComboBoxBlackboardBackgroundColor.SelectedIndex = (int)Settings.Canvas.BlackboardBackgroundColor;
ComboBoxBlackboardBackgroundPattern.SelectedIndex = (int)Settings.Canvas.BlackboardBackgroundPattern;
BoardPagesSettingsList[0].BackgroundColor = Settings.Canvas.BlackboardBackgroundColor;
BoardPagesSettingsList[0].BackgroundPattern = Settings.Canvas.BlackboardBackgroundPattern;
ToggleSwitchUseDefaultBackgroundColorForEveryNewAddedBlackboardPage.IsOn =
Settings.Canvas.UseDefaultBackgroundColorForEveryNewAddedBlackboardPage;
ToggleSwitchUseDefaultBackgroundPatternForEveryNewAddedBlackboardPage.IsOn =
Settings.Canvas.UseDefaultBackgroundPatternForEveryNewAddedBlackboardPage;
ToggleSwitchIsEnableAutoConvertInkColorWhenBackgroundChanged.IsOn =
Settings.Canvas.IsEnableAutoConvertInkColorWhenBackgroundChanged;
} else {
Settings.Canvas = new Canvas();
}

View File

@ -1,4 +1,5 @@
using Newtonsoft.Json;
using System;
using Newtonsoft.Json;
namespace Ink_Canvas
{
@ -49,11 +50,29 @@ namespace Ink_Canvas
[JsonProperty("clearCanvasAndClearTimeMachine")]
public bool ClearCanvasAndClearTimeMachine { get; set; } = false;
[Obsolete("已经使用多背景色“blackboardBackgroundColor”替换该选项")]
[JsonProperty("usingWhiteboard")]
public bool UsingWhiteboard { get; set; }
[JsonProperty("hyperbolaAsymptoteOption")]
public OptionalOperation HyperbolaAsymptoteOption { get; set; } = OptionalOperation.Ask;
[JsonProperty("blackboardBackgroundColor")]
public BlackboardBackgroundColorEnum BlackboardBackgroundColor { get; set; } =
BlackboardBackgroundColorEnum.White;
[JsonProperty("blackboardBackgroundPattern")]
public BlackboardBackgroundPatternEnum BlackboardBackgroundPattern { get; set; } =
BlackboardBackgroundPatternEnum.None;
[JsonProperty("useDefaultBackgroundColorForEveryNewAddedBlackboardPage")]
public bool UseDefaultBackgroundColorForEveryNewAddedBlackboardPage { get; set; } = false;
[JsonProperty("useDefaultBackgroundPatternForEveryNewAddedBlackboardPage")]
public bool UseDefaultBackgroundPatternForEveryNewAddedBlackboardPage { get; set; } = false;
[JsonProperty("isEnableAutoConvertInkColorWhenBackgroundChanged")]
public bool IsEnableAutoConvertInkColorWhenBackgroundChanged { get; set; } = false;
}
public enum OptionalOperation
@ -63,6 +82,23 @@ namespace Ink_Canvas
Ask
}
public enum BlackboardBackgroundColorEnum
{
GrayBlack,
BlackBoardGreen,
White,
BlueBlack,
EyeProtectionGreen,
RealBlack
}
public enum BlackboardBackgroundPatternEnum
{
None,
Dots,
Grid
}
public class Gesture
{
[JsonIgnore]