diff --git a/InkCanvasForClass/MainWindow.xaml b/InkCanvasForClass/MainWindow.xaml index e88d94b..8731d40 100644 --- a/InkCanvasForClass/MainWindow.xaml +++ b/InkCanvasForClass/MainWindow.xaml @@ -20,7 +20,7 @@ Closing="Window_Closing" Closed="Window_Closed" PreviewKeyDown="Main_Grid_PreviewKeyDown" - Height="9000" Width="1440" + Height="12000" Width="1440" FontFamily="Microsoft YaHei UI" MouseWheel="Window_MouseWheel" Foreground="Black" @@ -328,8 +328,8 @@ + x:Name="BtnLeftWhiteBoardSwitchPreviousGeometry" + Geometry="F1 M24,24z M0,0z M7.40091,10.456L14.5033,3.35357 12.3198,1.17001 1.48978,12 12.3198,22.83 14.5033,20.6465 7.40089,13.544 22.5102,13.544 22.5102,10.456 7.40091,10.456z" /> @@ -370,28 +370,28 @@ + MouseUp="BlackBoardLeftSidePageListView_OnMouseUp"> + Background="{Binding ElementName=GridBackgroundCover, Path=Background}" + Strokes="{Binding Strokes}" + Width="{Binding ElementName=inkCanvas, Path=ActualWidth}" + Height="{Binding ElementName=inkCanvas, Path=ActualHeight}"> + CornerRadius="3" HorizontalAlignment="Left" + VerticalAlignment="Top" + Background="#cc09090b"> + HorizontalAlignment="Center" + VerticalAlignment="Center" + FontFamily="Consolas" + Foreground="White" + Text="{Binding Index}"> @@ -416,8 +416,8 @@ + x:Name="BtnLeftWhiteBoardSwitchNextGeometry" + Geometry="F1 M24,24z M0,0z M16.5991,10.456L9.49667,3.35357 11.6802,1.17001 22.5102,12 11.6802,22.83 9.49667,20.6465 16.5991,13.544 1.48978,13.544 1.48978,10.456 16.5991,10.456z" /> @@ -478,11 +478,11 @@ + Brush="#18181b" + Geometry="F0 M24,24z M0,0z M7.82154,10.0753L7.82154,3.74613C7.82154,3.06603 8.08946,2.40655 8.57377,1.92224 9.05808,1.43793 9.70726,1.17001 10.3977,1.17001 11.0881,1.17001 11.7372,1.43793 12.2216,1.92224 12.7059,2.40655 12.9738,3.05573 12.9738,3.74613L12.9738,6.37308C13.1415,6.33947 13.3139,6.32225 13.489,6.32225 14.1794,6.32225 14.8286,6.59016 15.3129,7.07447 15.4484,7.21001 15.567,7.35845 15.6675,7.5171 15.9551,7.40916 16.2634,7.35269 16.5803,7.35269 17.2707,7.35269 17.9199,7.62061 18.4042,8.10492 18.5461,8.24683 18.6695,8.4029 18.7729,8.57001 19.6856,8.26338 20.7674,8.45871 21.4647,9.15599 21.949,9.6403 22.2169,10.2998 22.2169,10.9799L22.2169,15.6169C22.2169,17.5438 21.4647,19.3574 20.1045,20.7176 18.7443,22.0778 16.9307,22.83 15.0038,22.83L13.149,22.83 13.1799,22.8094 12.8398,22.8094C11.7682,22.7579 10.7068,22.4694 9.75878,21.9541 8.70773,21.3874 7.81124,20.563 7.15175,19.5738L6.94566,19.2647C6.60562,18.7494 5.49273,16.8019 3.52458,13.3087 3.19484,12.7213 3.1021,12.0412 3.27727,11.3818 3.45245,10.7326 3.86463,10.1761 4.44168,9.83608 5.00842,9.49604 5.66791,9.35177 6.31709,9.43421 6.86548,9.50385 7.39181,9.7279 7.82154,10.0753z M10.037,3.38547C10.1297,3.28243 10.2637,3.23091 10.3977,3.23091 10.5316,3.23091 10.6656,3.29273 10.7583,3.38547 10.8614,3.47821 10.9129,3.61217 10.9129,3.74613L10.9129,11.4745C10.9129,12.0412 11.3766,12.5049 11.9433,12.5049 12.5101,12.5049 12.9738,12.0412 12.9738,11.4745L12.9738,8.89836C12.9738,8.7644 13.0356,8.63045 13.1283,8.53771 13.2211,8.43466 13.355,8.38314 13.489,8.38314 13.623,8.38314 13.7569,8.44497 13.8497,8.53771 13.9527,8.63045 14.0042,8.7644 14.0042,8.89836L14.0042,11.4745C14.0042,12.0412 14.4679,12.5049 15.0347,12.5049 15.6014,12.5049 16.0651,12.0412 16.0651,11.4745L16.0651,9.92881C16.0651,9.79485 16.1269,9.66089 16.2197,9.56815 16.3124,9.46511 16.4464,9.41359 16.5803,9.41359 16.7143,9.41359 16.8483,9.47541 16.941,9.56815 17.044,9.66089 17.0956,9.79485 17.0956,9.92881L17.0956,10.5869C17.0752,10.7163 17.0646,10.8477 17.0646,10.9799 17.0646,11.0661 17.0754,11.1499 17.0956,11.2301L17.0956,11.4745C17.0956,12.0412 17.5593,12.5049 18.126,12.5049 18.6928,12.5049 19.1565,12.0412 19.1565,11.4745L19.1565,10.8128C19.1834,10.7399 19.2266,10.6727 19.2801,10.6192 19.4759,10.4234 19.8159,10.4234 20.0117,10.6192 20.1148,10.712 20.1663,10.8459 20.1663,10.9799L20.1663,15.6169C20.1663,16.9977 19.6408,18.296 18.6618,19.2647 17.6829,20.2333 16.3949,20.7691 15.0141,20.7691L13.1593,20.7691C12.3143,20.7691 11.4796,20.5527 10.7274,20.1509 9.98548,19.749 9.3363,19.1616 8.8726,18.4506L8.66651,18.1415C8.35737,17.6675 7.23419,15.7096 5.31756,12.2988 5.24543,12.1752 5.23512,12.0412 5.26604,11.9073 5.30725,11.7733 5.38969,11.6703 5.50304,11.5981 5.66791,11.4951 5.874,11.4539 6.06978,11.4745 6.26557,11.5054 6.45105,11.5878 6.59531,11.7321L8.11007,13.2469C8.49419,13.631 9.10425,13.648 9.50833,13.2978 9.73651,13.1084 9.88244,12.8229 9.88244,12.5049L9.88244,3.74613C9.88244,3.61217,9.94426,3.47821,10.037,3.38547z M2.99905,6.31195L1.78313,4.65293 2.61779,4.04497C3.46275,3.4267,4.37985,2.89087,5.33817,2.46838L6.27587,2.0459 7.12084,3.93162 6.18313,4.3541C5.35878,4.72506,4.56533,5.17846,3.83372,5.71429L2.99905,6.32225 2.99905,6.31195z M18.2806,5.20935L19.1565,5.75549 20.259,4.01404 19.3831,3.4679C18.1157,2.67446,16.7452,2.0768,15.3026,1.68523L14.303,1.41731 13.7672,3.40607 14.7667,3.67399C16.0033,4.00373,17.1883,4.51895,18.2806,5.20935z" /> + Brush="#18181b" + Geometry="F0 M24,24z M0,0z " /> @@ -524,13 +524,13 @@ VerticalAlignment="Center" /> + Name="BoardToggleSwitchEnableMultiTouchMode" + FontFamily="Microsoft YaHei UI" + IsOn="False" + OnContent="" + OffContent="" + Toggled="ToggleSwitchEnableMultiTouchMode_Toggled" + RenderTransformOrigin="0.5,0.5"> @@ -555,13 +555,13 @@ VerticalAlignment="Center" /> + Name="BoardToggleSwitchEnableTwoFingerTranslate" + FontFamily="Microsoft YaHei UI" + IsOn="False" + OnContent="" + OffContent="" + Toggled="ToggleSwitchEnableTwoFingerTranslate_Toggled" + RenderTransformOrigin="0.5,0.5"> @@ -586,11 +586,11 @@ VerticalAlignment="Center" /> + FontFamily="Microsoft YaHei UI" + IsOn="False" OnContent="" OffContent="" + Name="BoardToggleSwitchEnableTwoFingerZoom" + Toggled="ToggleSwitchEnableTwoFingerZoom_Toggled" + RenderTransformOrigin="0.5,0.5"> @@ -615,11 +615,11 @@ VerticalAlignment="Center" /> + FontFamily="Microsoft YaHei UI" + IsOn="False" OnContent="" OffContent="" + Name="BoardToggleSwitchEnableTwoFingerRotation" + Toggled="ToggleSwitchEnableTwoFingerRotation_Toggled" + RenderTransformOrigin="0.5,0.5"> @@ -649,7 +649,7 @@ + Geometry="F0 M24,24z M0,0z M4.71815,3.98345C6.64142,2.23541 9.19629,1.17001 12,1.17001 17.9812,1.17001 22.83,6.01877 22.83,12 22.83,17.9813 17.9812,22.83 12,22.83 11.6262,22.83 11.2568,22.8111 10.8927,22.7741 5.8167,22.2586 1.77699,18.2377 1.2325,13.1703 1.22536,13.1039 1.21882,13.0373 1.21289,12.9705 1.20871,12.9234 1.20483,12.8762 1.20125,12.8289 1.18054,12.5553 1.17,12.2789 1.17,12 1.17,9.41057 2.07878,7.03339 3.59479,5.17001 3.9391,4.74681 4.31473,4.35011 4.71815,3.98345z M12,20.83C16.8767,20.83 20.83,16.8767 20.83,12 20.83,7.12334 16.8767,3.17001 12,3.17001L12,20.83z" /> @@ -661,7 +661,7 @@ @@ -681,52 +681,102 @@ + Margin="0,5,0,0"> + BorderThickness="1" MouseUp="BoardBackgroundColor1Border_MouseUp"> - + Width="14" Height="14"> + + FontSize="10" Foreground="White" Text="灰黑" /> + BorderThickness="1" MouseUp="BoardBackgroundColor2Border_MouseUp"> + Width="14" Height="14" Name="BoardBackgroundColor2Checkbox" + Visibility="Collapsed"> + IsTabStop="False" IsChecked="True" + MinWidth="0" Padding="0" MinHeight="0"> + FontSize="10" Foreground="White" Text="黑板绿" /> + BorderThickness="1" MouseUp="BoardBackgroundColor3Border_MouseUp"> + Width="14" Height="14" Name="BoardBackgroundColor3Checkbox" + Visibility="Collapsed"> + IsTabStop="False" IsChecked="True" + MinWidth="0" Padding="0" MinHeight="0"> + FontSize="10" Foreground="#18181b" Text="白" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -734,20 +784,20 @@ + Margin="0,5,0,0"> + Width="14" Height="14"> + IsTabStop="False" IsChecked="True" + MinWidth="0" Padding="0" MinHeight="0"> + FontSize="10" Foreground="#18181b" Text="无" /> + RadiusX="5" RadiusY="5" /> @@ -773,20 +823,20 @@ + Width="14" Height="14" + Visibility="Collapsed"> + IsTabStop="False" IsChecked="True" + MinWidth="0" Padding="0" MinHeight="0"> + Margin="-2,-1,-1,0" + Padding="2,1,2,1" CornerRadius="4" + Canvas.Bottom="3" Canvas.Left="5"> + FontSize="10" Foreground="#18181b" + Text="点" /> @@ -798,7 +848,7 @@ Height="46"> + RadiusX="5" RadiusY="5" /> @@ -814,20 +864,20 @@ + Width="14" Height="14" + Visibility="Collapsed"> + IsTabStop="False" IsChecked="True" + MinWidth="0" Padding="0" MinHeight="0"> + Margin="-2,-1,-1,0" + Padding="2,1,2,1" CornerRadius="4" + Canvas.Bottom="3" Canvas.Left="5"> + FontSize="10" Foreground="#18181b" + Text="网格" /> @@ -857,8 +907,8 @@ + Brush="#18181b" + Geometry="F1 M24,24z M0,0z M22.7989,10.1653L1.14304,1.14304 10.1653,22.7989 12.8305,14.9518 19.6892,21.8105 21.8105,19.6892 14.9518,12.8305 22.7989,10.1653z" /> @@ -880,8 +930,8 @@ + Brush="#18181b" + Geometry="F1 M24,24z M0,0z M20.4786,1.42438C19.9985,1.23743 19.4847,1.15194 18.9698,1.17319 18.4549,1.19444 17.9499,1.32197 17.4869,1.54789 17.0368,1.76752 16.6358,2.07554 16.3083,2.45361L3.85516,14.9067 9.08243,20.134 21.5311,7.68529C21.9113,7.36382 22.223,6.96912 22.447,6.52438 22.6786,6.06462 22.8113,5.56167 22.8365,5.04763 22.8616,4.5336 22.7787,4.02012 22.593,3.54002 22.4073,3.05994 22.1232,2.62403 21.759,2.25988 21.3949,1.89574 20.9587,1.61132 20.4786,1.42438z M7.28056,21.1605L2.8286,16.7086 1.15912,22.83 7.28056,21.1605z" /> @@ -915,10 +965,10 @@ Margin="-1,-1,-1,0" Padding="1,1,1,0"> + VerticalAlignment="Center"> + HorizontalAlignment="Stretch" + Margin="8,0,0,0" Spacing="2"> + Background="#fafafa" + CornerRadius="1" /> + Height="20" Width="36"> + x:Name="BoardHighlightPenTabButtonIndicator" + Orientation="Horizontal" + Canvas.Left="14" + Canvas.Right="14" Canvas.Bottom="0"> + Background="#fafafa" + CornerRadius="1" /> + Height="20" Width="52"> + Height="55"> + Height="35"> + VerticalAlignment="Center"> + Width="140"> - - - - - - - - + + + + + + + + + + + + diff --git a/InkCanvasForClass/MainWindow.xaml.cs b/InkCanvasForClass/MainWindow.xaml.cs index b228381..6589a43 100644 --- a/InkCanvasForClass/MainWindow.xaml.cs +++ b/InkCanvasForClass/MainWindow.xaml.cs @@ -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) { diff --git a/InkCanvasForClass/MainWindow_cs/MW_BoardControls.cs b/InkCanvasForClass/MainWindow_cs/MW_BoardControls.cs index c49e5c4..8ad6382 100644 --- a/InkCanvasForClass/MainWindow_cs/MW_BoardControls.cs +++ b/InkCanvasForClass/MainWindow_cs/MW_BoardControls.cs @@ -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 BoardPagesSettingsList = new List() { + 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(); diff --git a/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs b/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs index a3bfc6f..0b53923 100644 --- a/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs +++ b/InkCanvasForClass/MainWindow_cs/MW_BoardIcons.cs @@ -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) { diff --git a/InkCanvasForClass/MainWindow_cs/MW_Colors.cs b/InkCanvasForClass/MainWindow_cs/MW_Colors.cs index d1d1188..445b86d 100644 --- a/InkCanvasForClass/MainWindow_cs/MW_Colors.cs +++ b/InkCanvasForClass/MainWindow_cs/MW_Colors.cs @@ -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; } } diff --git a/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs b/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs index 186d979..3a3a078 100644 --- a/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs +++ b/InkCanvasForClass/MainWindow_cs/MW_FloatingBarIcons.cs @@ -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; } /// @@ -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; diff --git a/InkCanvasForClass/MainWindow_cs/MW_PPT.cs b/InkCanvasForClass/MainWindow_cs/MW_PPT.cs index 6a1bc51..73ff9aa 100644 --- a/InkCanvasForClass/MainWindow_cs/MW_PPT.cs +++ b/InkCanvasForClass/MainWindow_cs/MW_PPT.cs @@ -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); diff --git a/InkCanvasForClass/MainWindow_cs/MW_Settings.cs b/InkCanvasForClass/MainWindow_cs/MW_Settings.cs index 0811e13..fe5b430 100644 --- a/InkCanvasForClass/MainWindow_cs/MW_Settings.cs +++ b/InkCanvasForClass/MainWindow_cs/MW_Settings.cs @@ -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; diff --git a/InkCanvasForClass/MainWindow_cs/MW_SettingsToLoad.cs b/InkCanvasForClass/MainWindow_cs/MW_SettingsToLoad.cs index a5f375c..7a017cb 100644 --- a/InkCanvasForClass/MainWindow_cs/MW_SettingsToLoad.cs +++ b/InkCanvasForClass/MainWindow_cs/MW_SettingsToLoad.cs @@ -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(); } diff --git a/InkCanvasForClass/Resources/Settings.cs b/InkCanvasForClass/Resources/Settings.cs index 516c4cd..63385cd 100644 --- a/InkCanvasForClass/Resources/Settings.cs +++ b/InkCanvasForClass/Resources/Settings.cs @@ -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]