diff --git a/Ink Canvas/Helpers/Converters.cs b/Ink Canvas/Helpers/Converters.cs
index 15fe2f3..4b7f47f 100644
--- a/Ink Canvas/Helpers/Converters.cs
+++ b/Ink Canvas/Helpers/Converters.cs
@@ -1,9 +1,36 @@
using System;
+using System.Globalization;
using System.Windows;
using System.Windows.Data;
namespace Ink_Canvas.Converter
{
+ public class BooleanToVisibilityConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ if ((bool)value == true)
+ {
+ return Visibility.Visible;
+ }
+ else
+ {
+ return Visibility.Collapsed;
+ }
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ if ((bool)value == true)
+ {
+ return Visibility.Visible;
+ }
+ else
+ {
+ return Visibility.Collapsed;
+ }
+ }
+ }
public class VisibilityConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
diff --git a/Ink Canvas/Ink Canvas.csproj b/Ink Canvas/Ink Canvas.csproj
index 3194d64..2f95b7b 100644
--- a/Ink Canvas/Ink Canvas.csproj
+++ b/Ink Canvas/Ink Canvas.csproj
@@ -185,6 +185,7 @@
+
@@ -304,7 +305,9 @@
+
+
@@ -325,6 +328,7 @@
+
@@ -443,9 +447,13 @@
+
+
+
+
diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index 947a721..c54de78 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -30,6 +30,7 @@
+
@@ -812,9 +813,9 @@
-
-
-
+
+
+
@@ -836,10 +837,14 @@
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
@@ -898,11 +903,17 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -916,7 +927,8 @@
-
+
+
@@ -946,6 +958,8 @@
+
+
@@ -1635,14 +1649,43 @@
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -1687,7 +1730,16 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -1756,6 +1808,153 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1779,7 +1978,7 @@
-
-
+
@@ -1916,10 +2118,13 @@
-
+
-
+
@@ -1933,6 +2138,33 @@
+
+
+
+
+
+
+
+
+
@@ -2024,7 +2256,10 @@
-
+
diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs
index 6a39ba9..46fe64a 100644
--- a/Ink Canvas/MainWindow.xaml.cs
+++ b/Ink Canvas/MainWindow.xaml.cs
@@ -81,6 +81,7 @@ namespace Ink_Canvas {
}
CheckColorTheme(true);
+ CheckPenTypeUIState();
}
#endregion
@@ -211,5 +212,6 @@ namespace Ink_Canvas {
}
#endregion Definations and Loading
+
}
}
\ No newline at end of file
diff --git a/Ink Canvas/MainWindow_cs/MW_Colors.cs b/Ink Canvas/MainWindow_cs/MW_Colors.cs
new file mode 100644
index 0000000..c3fe9f9
--- /dev/null
+++ b/Ink Canvas/MainWindow_cs/MW_Colors.cs
@@ -0,0 +1,627 @@
+using Ink_Canvas.Helpers;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Controls;
+using System.Windows.Ink;
+using System.Windows.Media.Imaging;
+using System.Windows.Media;
+using System.Windows;
+using System.Windows.Input;
+
+namespace Ink_Canvas
+{
+ public partial class MainWindow : Window
+ {
+ int inkColor = 1;
+
+ private void ColorSwitchCheck()
+ {
+ HideSubPanels("color");
+ if (Main_Grid.Background == Brushes.Transparent)
+ {
+ if (currentMode == 1)
+ {
+ currentMode = 0;
+ GridBackgroundCover.Visibility = Visibility.Collapsed;
+ AnimationsHelper.HideWithSlideAndFade(BlackboardLeftSide);
+ AnimationsHelper.HideWithSlideAndFade(BlackboardCenterSide);
+ AnimationsHelper.HideWithSlideAndFade(BlackboardRightSide);
+ }
+ BtnHideInkCanvas_Click(BtnHideInkCanvas, null);
+ }
+
+ StrokeCollection strokes = inkCanvas.GetSelectedStrokes();
+ if (strokes.Count != 0)
+ {
+ foreach (Stroke stroke in strokes)
+ {
+ try
+ {
+ stroke.DrawingAttributes.Color = inkCanvas.DefaultDrawingAttributes.Color;
+ }
+ catch { }
+ }
+ }
+ else
+ {
+ inkCanvas.IsManipulationEnabled = true;
+ drawingShapeMode = 0;
+ inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
+ CancelSingleFingerDragMode();
+ forceEraser = false;
+ CheckColorTheme();
+ }
+
+ isLongPressSelected = false;
+ }
+
+ bool isUselightThemeColor = false, isDesktopUselightThemeColor = false;
+ int penType = 0; // 0是签字笔,1是荧光笔
+ int lastDesktopInkColor = 1, lastBoardInkColor = 5;
+ int highlighterColor = 102;
+
+ 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));
+ 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;
+ }
+ }
+ }
+
+ if (currentMode == 0)
+ {
+ isUselightThemeColor = isDesktopUselightThemeColor;
+ inkColor = lastDesktopInkColor;
+ }
+ else
+ {
+ inkColor = lastBoardInkColor;
+ }
+
+ double alpha = inkCanvas.DefaultDrawingAttributes.Color.A;
+
+ if (inkColor == 0)
+ { // Black
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 0, 0, 0);
+ }
+ else if (inkColor == 5)
+ { // White
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 255, 255, 255);
+ }
+ else if (penType==0)
+ {
+ if (isUselightThemeColor)
+ {
+ if (inkColor == 1)
+ { // Red
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 239, 68, 68);
+ }
+ else if (inkColor == 2)
+ { // Green
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 34, 197, 94);
+ }
+ else if (inkColor == 3)
+ { // Blue
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 59, 130, 246);
+ }
+ else if (inkColor == 4)
+ { // Yellow
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 250, 204, 21);
+ }
+ else if (inkColor == 6)
+ { // Pink
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 236, 72, 153);
+ }
+ else if (inkColor == 7)
+ { // Teal (亮色)
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 20, 184, 166);
+ }
+ else if (inkColor == 8)
+ { // Orange (亮色)
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 249, 115, 22);
+ }
+ }
+ else
+ {
+ if (inkColor == 1)
+ { // Red
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 220, 38, 38);
+ }
+ else if (inkColor == 2)
+ { // Green
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 22, 163, 74);
+ }
+ else if (inkColor == 3)
+ { // Blue
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 37, 99, 235);
+ }
+ else if (inkColor == 4)
+ { // Yellow
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 234, 179, 8);
+ }
+ else if (inkColor == 6)
+ { // Pink ( Purple )
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 147, 51, 234);
+ }
+ else if (inkColor == 7)
+ { // Teal (暗色)
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 13, 148, 136);
+ }
+ else if (inkColor == 8)
+ { // Orange (暗色)
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 234, 88, 12);
+ }
+ }
+ } else if (penType==1)
+ {
+ if (highlighterColor == 100)
+ { // Black
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromRgb(0,0,0);
+ }
+ else if (highlighterColor == 101)
+ { // White
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromRgb(250, 250, 250);
+ }
+ else if (highlighterColor == 102)
+ { // Red
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromRgb(239, 68, 68);
+ }
+ else if (highlighterColor == 103)
+ { // Yellow
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromRgb(253, 224, 71);
+ }
+ else if (highlighterColor == 104)
+ { // Green
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromRgb(74, 222, 128);
+ }
+ else if (highlighterColor == 105)
+ { // Zinc
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromRgb(113, 113, 122);
+ }
+ else if (highlighterColor == 106)
+ { // Blue
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromRgb(59, 130, 246);
+ }
+ else if (highlighterColor == 107)
+ { // Purple
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromRgb(168, 85, 247);
+ }
+ else if (highlighterColor == 108)
+ { // teal
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromRgb(45, 212, 191);
+ }
+ else if (highlighterColor == 109)
+ { // Orange
+ inkCanvas.DefaultDrawingAttributes.Color = Color.FromRgb(249, 115, 22);
+ }
+ }
+ if (isUselightThemeColor)
+ { // 亮系
+ // 亮色的红色
+ BorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(239, 68, 68));
+ BoardBorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(239, 68, 68));
+ // 亮色的绿色
+ BorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(34, 197, 94));
+ BoardBorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(34, 197, 94));
+ // 亮色的蓝色
+ BorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(59, 130, 246));
+ BoardBorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(59, 130, 246));
+ // 亮色的黄色
+ BorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(250, 204, 21));
+ BoardBorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(250, 204, 21));
+ // 亮色的粉色
+ BorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(236, 72, 153));
+ BoardBorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(236, 72, 153));
+ // 亮色的Teal
+ BorderPenColorTeal.Background = new SolidColorBrush(Color.FromRgb(20, 184, 166));
+ // 亮色的Orange
+ BorderPenColorOrange.Background = new SolidColorBrush(Color.FromRgb(249, 115, 22));
+
+ BitmapImage newImageSource = new BitmapImage();
+ newImageSource.BeginInit();
+ newImageSource.UriSource = new Uri("/Resources/Icons-Fluent/ic_fluent_weather_moon_24_regular.png", UriKind.RelativeOrAbsolute);
+ newImageSource.EndInit();
+ ColorThemeSwitchIcon.Source = newImageSource;
+ BoardColorThemeSwitchIcon.Source = newImageSource;
+
+ ColorThemeSwitchTextBlock.Text = "暗系";
+ BoardColorThemeSwitchTextBlock.Text = "暗系";
+ }
+ else
+ { // 暗系
+ // 暗色的红色
+ BorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(220, 38, 38));
+ BoardBorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(220, 38, 38));
+ // 暗色的绿色
+ BorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(22, 163, 74));
+ BoardBorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(22, 163, 74));
+ // 暗色的蓝色
+ BorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(37, 99, 235));
+ BoardBorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(37, 99, 235));
+ // 暗色的黄色
+ BorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(234, 179, 8));
+ BoardBorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(234, 179, 8));
+ // 暗色的紫色对应亮色的粉色
+ BorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(147, 51, 234));
+ BoardBorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(147, 51, 234));
+ // 暗色的Teal
+ BorderPenColorTeal.Background = new SolidColorBrush(Color.FromRgb(13, 148, 136));
+ // 暗色的Orange
+ BorderPenColorOrange.Background = new SolidColorBrush(Color.FromRgb(234, 88, 12));
+
+ BitmapImage newImageSource = new BitmapImage();
+ newImageSource.BeginInit();
+ newImageSource.UriSource = new Uri("/Resources/Icons-Fluent/ic_fluent_weather_sunny_24_regular.png", UriKind.RelativeOrAbsolute);
+ newImageSource.EndInit();
+ ColorThemeSwitchIcon.Source = newImageSource;
+ BoardColorThemeSwitchIcon.Source = newImageSource;
+
+ ColorThemeSwitchTextBlock.Text = "亮系";
+ BoardColorThemeSwitchTextBlock.Text = "亮系";
+ }
+
+ // 改变选中提示
+ ViewboxBtnColorBlackContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorBlueContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorGreenContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorRedContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorYellowContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorWhiteContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorPinkContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorTealContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorOrangeContent.Visibility = Visibility.Collapsed;
+ BoardViewboxBtnColorBlackContent.Visibility = Visibility.Collapsed;
+ BoardViewboxBtnColorBlueContent.Visibility = Visibility.Collapsed;
+ BoardViewboxBtnColorGreenContent.Visibility = Visibility.Collapsed;
+ BoardViewboxBtnColorRedContent.Visibility = Visibility.Collapsed;
+ BoardViewboxBtnColorYellowContent.Visibility = Visibility.Collapsed;
+ BoardViewboxBtnColorWhiteContent.Visibility = Visibility.Collapsed;
+ BoardViewboxBtnColorPinkContent.Visibility = Visibility.Collapsed;
+
+ HighlighterPenViewboxBtnColorBlackContent.Visibility = Visibility.Collapsed;
+ HighlighterPenViewboxBtnColorBlueContent.Visibility= Visibility.Collapsed;
+ HighlighterPenViewboxBtnColorGreenContent.Visibility= Visibility.Collapsed;
+ HighlighterPenViewboxBtnColorOrangeContent.Visibility= Visibility.Collapsed;
+ HighlighterPenViewboxBtnColorPurpleContent.Visibility= Visibility.Collapsed;
+ HighlighterPenViewboxBtnColorRedContent.Visibility= Visibility.Collapsed;
+ HighlighterPenViewboxBtnColorTealContent.Visibility=Visibility.Collapsed;
+ HighlighterPenViewboxBtnColorWhiteContent.Visibility= Visibility.Collapsed;
+ HighlighterPenViewboxBtnColorYellowContent.Visibility=Visibility.Collapsed;
+ HighlighterPenViewboxBtnColorZincContent.Visibility=Visibility.Collapsed;
+
+ switch (inkColor)
+ {
+ case 0:
+ ViewboxBtnColorBlackContent.Visibility = Visibility.Visible;
+ BoardViewboxBtnColorBlackContent.Visibility = Visibility.Visible;
+ break;
+ case 1:
+ ViewboxBtnColorRedContent.Visibility = Visibility.Visible;
+ BoardViewboxBtnColorRedContent.Visibility = Visibility.Visible;
+ break;
+ case 2:
+ ViewboxBtnColorGreenContent.Visibility = Visibility.Visible;
+ BoardViewboxBtnColorGreenContent.Visibility = Visibility.Visible;
+ break;
+ case 3:
+ ViewboxBtnColorBlueContent.Visibility = Visibility.Visible;
+ BoardViewboxBtnColorBlueContent.Visibility = Visibility.Visible;
+ break;
+ case 4:
+ ViewboxBtnColorYellowContent.Visibility = Visibility.Visible;
+ BoardViewboxBtnColorYellowContent.Visibility = Visibility.Visible;
+ break;
+ case 5:
+ ViewboxBtnColorWhiteContent.Visibility = Visibility.Visible;
+ BoardViewboxBtnColorWhiteContent.Visibility = Visibility.Visible;
+ break;
+ case 6:
+ ViewboxBtnColorPinkContent.Visibility = Visibility.Visible;
+ BoardViewboxBtnColorPinkContent.Visibility = Visibility.Visible;
+ break;
+ case 7:
+ ViewboxBtnColorTealContent.Visibility = Visibility.Visible;
+ break;
+ case 8:
+ ViewboxBtnColorOrangeContent.Visibility = Visibility.Visible;
+ break;
+ }
+
+ switch (highlighterColor)
+ {
+ case 100:
+ HighlighterPenViewboxBtnColorBlackContent.Visibility = Visibility.Visible;
+ break;
+ case 101:
+ HighlighterPenViewboxBtnColorWhiteContent.Visibility = Visibility.Visible;
+ break;
+ case 102:
+ HighlighterPenViewboxBtnColorRedContent.Visibility = Visibility.Visible;
+ break;
+ case 103:
+ HighlighterPenViewboxBtnColorYellowContent.Visibility = Visibility.Visible;
+ break;
+ case 104:
+ HighlighterPenViewboxBtnColorGreenContent.Visibility = Visibility.Visible;
+ break;
+ case 105:
+ HighlighterPenViewboxBtnColorZincContent.Visibility = Visibility.Visible;
+ break;
+ case 106:
+ HighlighterPenViewboxBtnColorBlueContent.Visibility = Visibility.Visible;
+ break;
+ case 107:
+ HighlighterPenViewboxBtnColorPurpleContent.Visibility = Visibility.Visible;
+ break;
+ case 108:
+ HighlighterPenViewboxBtnColorTealContent.Visibility = Visibility.Visible;
+ break;
+ case 109:
+ HighlighterPenViewboxBtnColorOrangeContent.Visibility = Visibility.Visible;
+ break;
+ }
+
+ }
+
+ private void CheckLastColor(int inkColor, bool isHighlighter = false)
+ {
+ if (isHighlighter==true)
+ {
+ highlighterColor = inkColor;
+ } else
+ {
+ if (currentMode == 0) lastDesktopInkColor = inkColor;
+ else lastBoardInkColor = inkColor;
+ }
+
+ }
+
+ private void CheckPenTypeUIState()
+ {
+ if (penType==0)
+ {
+ DefaultPenPropsPanel.Visibility = Visibility.Visible;
+ DefaultPenColorsPanel.Visibility = Visibility.Visible;
+ HighlighterPenColorsPanel.Visibility = Visibility.Collapsed;
+ HighlighterPenPropsPanel.Visibility = Visibility.Collapsed;
+ PenPalette.Margin = new Thickness(-160, -200, -33, 32);
+ DefaultPenTabButton.Opacity = 1;
+ DefaultPenTabButtonText.FontWeight = FontWeights.Bold;
+ DefaultPenTabButtonText.Margin = new Thickness(2, 0.5, 0, 0);
+ DefaultPenTabButtonText.FontSize = 9.5;
+ DefaultPenTabButton.Background = new SolidColorBrush(Color.FromArgb(72, 219, 234, 254));
+ DefaultPenTabButtonIndicator.Visibility = Visibility.Visible;
+ HighlightPenTabButton.Opacity = 0.9;
+ HighlightPenTabButtonText.FontWeight = FontWeights.Normal;
+ HighlightPenTabButtonText.FontSize = 9;
+ HighlightPenTabButtonText.Margin = new Thickness(2, 1, 0, 0);
+ HighlightPenTabButton.Background = new SolidColorBrush(Colors.Transparent);
+ HighlightPenTabButtonIndicator.Visibility = Visibility.Collapsed;
+ } else if (penType==1)
+ {
+ DefaultPenPropsPanel.Visibility = Visibility.Collapsed;
+ DefaultPenColorsPanel.Visibility = Visibility.Collapsed;
+ HighlighterPenColorsPanel.Visibility = Visibility.Visible;
+ HighlighterPenPropsPanel.Visibility = Visibility.Visible;
+ PenPalette.Margin = new Thickness(-160, -157, -33, 32);
+ DefaultPenTabButton.Opacity = 0.9;
+ DefaultPenTabButtonText.FontWeight = FontWeights.Normal;
+ DefaultPenTabButtonText.FontSize = 9;
+ DefaultPenTabButtonText.Margin = new Thickness(2, 1, 0, 0);
+ DefaultPenTabButton.Background = new SolidColorBrush(Colors.Transparent);
+ DefaultPenTabButtonIndicator.Visibility = Visibility.Collapsed;
+ HighlightPenTabButton.Opacity = 1;
+ HighlightPenTabButtonText.FontWeight = FontWeights.Bold;
+ HighlightPenTabButtonText.FontSize = 9.5;
+ HighlightPenTabButtonText.Margin = new Thickness(2, 0.5, 0, 0);
+ HighlightPenTabButton.Background = new SolidColorBrush(Color.FromArgb(72, 219, 234, 254));
+ HighlightPenTabButtonIndicator.Visibility = Visibility.Visible;
+ }
+ }
+
+ private void SwitchToDefaultPen(object sender, MouseButtonEventArgs e)
+ {
+ penType = 0;
+ CheckPenTypeUIState();
+ CheckColorTheme();
+ drawingAttributes.Width = Settings.Canvas.InkWidth;
+ drawingAttributes.Height = Settings.Canvas.InkWidth;
+ drawingAttributes.StylusTip = StylusTip.Ellipse;
+ drawingAttributes.IsHighlighter = false;
+ }
+
+ private void SwitchToHighlighterPen(object sender, MouseButtonEventArgs e)
+ {
+ penType = 1;
+ CheckPenTypeUIState();
+ CheckColorTheme();
+ drawingAttributes.Width = Settings.Canvas.HighlighterWidth/2;
+ drawingAttributes.Height = Settings.Canvas.HighlighterWidth;
+ drawingAttributes.StylusTip = StylusTip.Rectangle;
+ drawingAttributes.IsHighlighter = true;
+ }
+
+ private void BtnColorBlack_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(0);
+ forceEraser = false;
+ ColorSwitchCheck();
+ }
+
+ private void BtnColorRed_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(1);
+ forceEraser = false;
+ ColorSwitchCheck();
+ }
+
+ private void BtnColorGreen_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(2);
+ forceEraser = false;
+ ColorSwitchCheck();
+ }
+
+ private void BtnColorBlue_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(3);
+ forceEraser = false;
+ ColorSwitchCheck();
+ }
+
+ private void BtnColorYellow_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(4);
+ forceEraser = false;
+ ColorSwitchCheck();
+ }
+
+ private void BtnColorWhite_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(5);
+ forceEraser = false;
+ ColorSwitchCheck();
+ }
+
+ private void BtnColorPink_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(6);
+ forceEraser = false;
+ ColorSwitchCheck();
+ }
+
+ private void BtnColorOrange_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(8);
+ forceEraser = false;
+ ColorSwitchCheck();
+ }
+
+ private void BtnColorTeal_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(7);
+ forceEraser = false;
+ ColorSwitchCheck();
+ }
+
+ private void BtnHighlighterColorBlack_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(100,true);
+ penType = 1;
+ forceEraser = false;
+ CheckPenTypeUIState();
+ ColorSwitchCheck();
+ }
+ private void BtnHighlighterColorWhite_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(101, true);
+ penType = 1;
+ forceEraser = false;
+ CheckPenTypeUIState();
+ ColorSwitchCheck();
+ }
+ private void BtnHighlighterColorRed_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(102, true);
+ penType = 1;
+ forceEraser = false;
+ CheckPenTypeUIState();
+ ColorSwitchCheck();
+ }
+ private void BtnHighlighterColorYellow_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(103, true);
+ penType = 1;
+ forceEraser = false;
+ CheckPenTypeUIState();
+ ColorSwitchCheck();
+ }
+ private void BtnHighlighterColorGreen_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(104, true);
+ penType = 1;
+ forceEraser = false;
+ CheckPenTypeUIState();
+ ColorSwitchCheck();
+ }
+ private void BtnHighlighterColorZinc_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(105, true);
+ penType = 1;
+ forceEraser = false;
+ CheckPenTypeUIState();
+ ColorSwitchCheck();
+ }
+ private void BtnHighlighterColorBlue_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(106, true);
+ penType = 1;
+ forceEraser = false;
+ CheckPenTypeUIState();
+ ColorSwitchCheck();
+ }
+ private void BtnHighlighterColorPurple_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(107, true);
+ penType = 1;
+ forceEraser = false;
+ CheckPenTypeUIState();
+ ColorSwitchCheck();
+ }
+ private void BtnHighlighterColorTeal_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(108, true);
+ penType = 1;
+ forceEraser = false;
+ CheckPenTypeUIState();
+ ColorSwitchCheck();
+ }
+ private void BtnHighlighterColorOrange_Click(object sender, RoutedEventArgs e)
+ {
+ CheckLastColor(109, true);
+ penType = 1;
+ forceEraser = false;
+ CheckPenTypeUIState();
+ ColorSwitchCheck();
+ }
+
+ private Color StringToColor(string colorStr)
+ {
+ Byte[] argb = new Byte[4];
+ for (int i = 0; i < 4; i++)
+ {
+ char[] charArray = colorStr.Substring(i * 2 + 1, 2).ToCharArray();
+ Byte b1 = toByte(charArray[0]);
+ Byte b2 = toByte(charArray[1]);
+ argb[i] = (Byte)(b2 | (b1 << 4));
+ }
+ return Color.FromArgb(argb[0], argb[1], argb[2], argb[3]);//#FFFFFFFF
+ }
+
+ private static byte toByte(char c)
+ {
+ byte b = (byte)"0123456789ABCDEF".IndexOf(c);
+ return b;
+ }
+ }
+}
diff --git a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
index e351b8d..f1712c7 100644
--- a/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
+++ b/Ink Canvas/MainWindow_cs/MW_FloatingBarIcons.cs
@@ -20,12 +20,16 @@ using System.IO;
using System.Windows.Media.Effects;
using static System.Net.Mime.MediaTypeNames;
using System.Text;
+using System.Globalization;
+using System.Windows.Data;
namespace Ink_Canvas {
public partial class MainWindow : Window {
#region TwoFingZoomBtn
+
+
private void TwoFingerGestureBorder_MouseUp(object sender, RoutedEventArgs e) {
FloatingBarIcons_MouseUp_New(sender);
if (TwoFingerGestureBorder.Visibility == Visibility.Visible) {
@@ -484,6 +488,7 @@ namespace Ink_Canvas {
});
})).Start();
+ SwitchToDefaultPen(null, null);
CheckColorTheme(true);
}
@@ -510,6 +515,39 @@ namespace Ink_Canvas {
new RandWindow().Show();
}
+ public void CheckEraserTypeTab()
+ {
+ if (Settings.Canvas.EraserShapeType==0)
+ {
+ CircleEraserTabButton.Background = new SolidColorBrush(Color.FromArgb(85, 59, 130, 246));
+ CircleEraserTabButton.Opacity = 1;
+ CircleEraserTabButtonText.FontWeight = FontWeights.Bold;
+ CircleEraserTabButtonText.Margin = new Thickness(2, 0.5, 0, 0);
+ CircleEraserTabButtonText.FontSize = 9.5;
+ CircleEraserTabButtonIndicator.Visibility = Visibility.Visible;
+ RectangleEraserTabButton.Background = new SolidColorBrush(Colors.Transparent);
+ RectangleEraserTabButton.Opacity = 0.75;
+ RectangleEraserTabButtonText.FontWeight = FontWeights.Normal;
+ RectangleEraserTabButtonText.FontSize = 9;
+ RectangleEraserTabButtonText.Margin = new Thickness(2, 1, 0, 0);
+ RectangleEraserTabButtonIndicator.Visibility = Visibility.Collapsed;
+ } else
+ {
+ RectangleEraserTabButton.Background = new SolidColorBrush(Color.FromArgb(85, 59, 130, 246));
+ RectangleEraserTabButton.Opacity = 1;
+ RectangleEraserTabButtonText.FontWeight = FontWeights.Bold;
+ RectangleEraserTabButtonText.Margin = new Thickness(2, 0.5, 0, 0);
+ RectangleEraserTabButtonText.FontSize = 9.5;
+ RectangleEraserTabButtonIndicator.Visibility = Visibility.Visible;
+ CircleEraserTabButton.Background = new SolidColorBrush(Colors.Transparent);
+ CircleEraserTabButton.Opacity = 0.75;
+ CircleEraserTabButtonText.FontWeight = FontWeights.Normal;
+ CircleEraserTabButtonText.FontSize = 9;
+ CircleEraserTabButtonText.Margin = new Thickness(2, 1, 0, 0);
+ CircleEraserTabButtonIndicator.Visibility = Visibility.Collapsed;
+ }
+ }
+
private void SymbolIconRandOne_MouseUp(object sender, MouseButtonEventArgs e) {
if (lastBorderMouseDownObject != sender) return;
@@ -831,22 +869,46 @@ namespace Ink_Canvas {
FloatingBarIcons_MouseUp_New(sender);
forceEraser = true;
forcePointEraser = true;
- double k = 1;
- switch (Settings.Canvas.EraserSize) {
- case 0:
- k = 0.5;
- break;
- case 1:
- k = 0.8;
- break;
- case 3:
- k = 1.25;
- break;
- case 4:
- k = 1.8;
- break;
+ if (Settings.Canvas.EraserShapeType == 0)
+ {
+ double k = 1;
+ switch (Settings.Canvas.EraserSize)
+ {
+ 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)
+ {
+ double k = 1;
+ switch (Settings.Canvas.EraserSize)
+ {
+ 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);
}
- inkCanvas.EraserShape = new EllipseStylusShape(k * 90, k * 90);
if (inkCanvas.EditingMode == InkCanvasEditingMode.EraseByPoint)
{
@@ -1190,12 +1252,17 @@ namespace Ink_Canvas {
inkCanvas.Children.Clear();
CancelSingleFingerDragMode();
+
+ if (Settings.Canvas.ClearCanvasAndClearTimeMachine)
+ {
+ timeMachine.ClearStrokeHistory();
+ }
}
- bool lastIsInMultiTouchMode = false;
- private void CancelSingleFingerDragMode()
- {
- if (ToggleSwitchDrawShapeBorderAutoHide.IsOn) {
+ bool lastIsInMultiTouchMode = false;
+ private void CancelSingleFingerDragMode()
+ {
+ if (ToggleSwitchDrawShapeBorderAutoHide.IsOn) {
CollapseBorderDrawShape();
}
@@ -1205,7 +1272,7 @@ namespace Ink_Canvas {
BtnFingerDragMode_Click(BtnFingerDragMode, null);
}
isLongPressSelected = false;
- }
+ }
private void BtnHideControl_Click(object sender, RoutedEventArgs e) {
if (StackPanelControl.Visibility == Visibility.Visible) {
@@ -1423,341 +1490,5 @@ namespace Ink_Canvas {
#endregion
- #region Right Side Panel (Buttons - Color)
-
- int inkColor = 1;
-
- private void ColorSwitchCheck() {
- HideSubPanels("color");
- if (Main_Grid.Background == Brushes.Transparent) {
- if (currentMode == 1) {
- currentMode = 0;
- GridBackgroundCover.Visibility = Visibility.Collapsed;
- AnimationsHelper.HideWithSlideAndFade(BlackboardLeftSide);
- AnimationsHelper.HideWithSlideAndFade(BlackboardCenterSide);
- AnimationsHelper.HideWithSlideAndFade(BlackboardRightSide);
- }
- BtnHideInkCanvas_Click(BtnHideInkCanvas, null);
- }
-
- StrokeCollection strokes = inkCanvas.GetSelectedStrokes();
- if (strokes.Count != 0) {
- foreach (Stroke stroke in strokes) {
- try {
- stroke.DrawingAttributes.Color = inkCanvas.DefaultDrawingAttributes.Color;
- } catch { }
- }
- } else {
- inkCanvas.IsManipulationEnabled = true;
- drawingShapeMode = 0;
- inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
- CancelSingleFingerDragMode();
- forceEraser = false;
- CheckColorTheme();
- }
-
- isLongPressSelected = false;
- }
-
- bool isUselightThemeColor = false, isDesktopUselightThemeColor = false;
- int lastDesktopInkColor = 1, lastBoardInkColor = 5;
-
- 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));
- 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;
- }
- }
- }
-
- if (currentMode == 0) {
- isUselightThemeColor = isDesktopUselightThemeColor;
- inkColor = lastDesktopInkColor;
- } else {
- inkColor = lastBoardInkColor;
- }
-
- double alpha = inkCanvas.DefaultDrawingAttributes.Color.A;
-
- if (inkColor == 0) { // Black
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha,0,0,0);
- } else if (inkColor == 5) { // White
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 255, 255, 255);
- } else if (isUselightThemeColor) {
- if (inkColor == 1) { // Red
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 239,68,68);
- } else if (inkColor == 2) { // Green
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 34,197,94);
- } else if (inkColor == 3) { // Blue
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 59, 130, 246);
- } else if (inkColor == 4) { // Yellow
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 250, 204, 21);
- } else if (inkColor == 6) { // Pink
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 236, 72, 153);
- } else if (inkColor == 7) { // Teal (亮色)
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 20, 184, 166);
- } else if (inkColor == 8) { // Orange (亮色)
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 249, 115, 22);
- }
- } else {
- if (inkColor == 1) { // Red
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 220, 38, 38);
- } else if (inkColor == 2) { // Green
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 22, 163, 74);
- } else if (inkColor == 3) { // Blue
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 37, 99, 235);
- } else if (inkColor == 4) { // Yellow
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 234, 179, 8);
- } else if (inkColor == 6) { // Pink ( Purple )
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 147, 51, 234);
- } else if (inkColor == 7) { // Teal (暗色)
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 13, 148, 136);
- } else if (inkColor == 8) { // Orange (暗色)
- inkCanvas.DefaultDrawingAttributes.Color = Color.FromArgb((byte)alpha, 234, 88, 12);
- }
- }
- if (isUselightThemeColor) { // 亮系
- // 亮色的红色
- BorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(239, 68, 68));
- BoardBorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(239, 68, 68));
- // 亮色的绿色
- BorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(34, 197, 94));
- BoardBorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(34, 197, 94));
- // 亮色的蓝色
- BorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(59, 130, 246));
- BoardBorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(59, 130, 246));
- // 亮色的黄色
- BorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(250, 204, 21));
- BoardBorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(250, 204, 21));
- // 亮色的粉色
- BorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(236, 72, 153));
- BoardBorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(236, 72, 153));
- // 亮色的Teal
- BorderPenColorTeal.Background = new SolidColorBrush(Color.FromRgb(20, 184, 166));
- // 亮色的Orange
- BorderPenColorOrange.Background = new SolidColorBrush(Color.FromRgb(249, 115, 22));
-
- BitmapImage newImageSource = new BitmapImage();
- newImageSource.BeginInit();
- newImageSource.UriSource = new Uri("/Resources/Icons-Fluent/ic_fluent_weather_moon_24_regular.png", UriKind.RelativeOrAbsolute);
- newImageSource.EndInit();
- ColorThemeSwitchIcon.Source = newImageSource;
- BoardColorThemeSwitchIcon.Source = newImageSource;
-
- ColorThemeSwitchTextBlock.Text = "暗系";
- BoardColorThemeSwitchTextBlock.Text = "暗系";
- } else { // 暗系
- // 暗色的红色
- BorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(220, 38, 38));
- BoardBorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(220, 38, 38));
- // 暗色的绿色
- BorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(22, 163, 74));
- BoardBorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(22, 163, 74));
- // 暗色的蓝色
- BorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(37, 99, 235));
- BoardBorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(37, 99, 235));
- // 暗色的黄色
- BorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(234, 179, 8));
- BoardBorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(234, 179, 8));
- // 暗色的紫色对应亮色的粉色
- BorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(147, 51, 234));
- BoardBorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(147, 51, 234));
- // 暗色的Teal
- BorderPenColorTeal.Background = new SolidColorBrush(Color.FromRgb(13, 148, 136));
- // 暗色的Orange
- BorderPenColorOrange.Background = new SolidColorBrush(Color.FromRgb(234, 88, 12));
-
- BitmapImage newImageSource = new BitmapImage();
- newImageSource.BeginInit();
- newImageSource.UriSource = new Uri("/Resources/Icons-Fluent/ic_fluent_weather_sunny_24_regular.png", UriKind.RelativeOrAbsolute);
- newImageSource.EndInit();
- ColorThemeSwitchIcon.Source = newImageSource;
- BoardColorThemeSwitchIcon.Source = newImageSource;
-
- ColorThemeSwitchTextBlock.Text = "亮系";
- BoardColorThemeSwitchTextBlock.Text = "亮系";
- }
-
- // 改变选中提示
- ViewboxBtnColorBlackContent.Visibility = Visibility.Collapsed;
- ViewboxBtnColorBlueContent.Visibility = Visibility.Collapsed;
- ViewboxBtnColorGreenContent.Visibility = Visibility.Collapsed;
- ViewboxBtnColorRedContent.Visibility = Visibility.Collapsed;
- ViewboxBtnColorYellowContent.Visibility = Visibility.Collapsed;
- ViewboxBtnColorWhiteContent.Visibility = Visibility.Collapsed;
- ViewboxBtnColorPinkContent.Visibility = Visibility.Collapsed;
- ViewboxBtnColorTealContent.Visibility = Visibility.Collapsed;
- ViewboxBtnColorOrangeContent.Visibility = Visibility.Collapsed;
- BoardViewboxBtnColorBlackContent.Visibility = Visibility.Collapsed;
- BoardViewboxBtnColorBlueContent.Visibility = Visibility.Collapsed;
- BoardViewboxBtnColorGreenContent.Visibility = Visibility.Collapsed;
- BoardViewboxBtnColorRedContent.Visibility = Visibility.Collapsed;
- BoardViewboxBtnColorYellowContent.Visibility = Visibility.Collapsed;
- BoardViewboxBtnColorWhiteContent.Visibility = Visibility.Collapsed;
- BoardViewboxBtnColorPinkContent.Visibility = Visibility.Collapsed;
- switch (inkColor) {
- case 0:
- ViewboxBtnColorBlackContent.Visibility = Visibility.Visible;
- BoardViewboxBtnColorBlackContent.Visibility = Visibility.Visible;
- break;
- case 1:
- ViewboxBtnColorRedContent.Visibility = Visibility.Visible;
- BoardViewboxBtnColorRedContent.Visibility = Visibility.Visible;
- break;
- case 2:
- ViewboxBtnColorGreenContent.Visibility = Visibility.Visible;
- BoardViewboxBtnColorGreenContent.Visibility = Visibility.Visible;
- break;
- case 3:
- ViewboxBtnColorBlueContent.Visibility = Visibility.Visible;
- BoardViewboxBtnColorBlueContent.Visibility = Visibility.Visible;
- break;
- case 4:
- ViewboxBtnColorYellowContent.Visibility = Visibility.Visible;
- BoardViewboxBtnColorYellowContent.Visibility = Visibility.Visible;
- break;
- case 5:
- ViewboxBtnColorWhiteContent.Visibility = Visibility.Visible;
- BoardViewboxBtnColorWhiteContent.Visibility = Visibility.Visible;
- break;
- case 6:
- ViewboxBtnColorPinkContent.Visibility = Visibility.Visible;
- BoardViewboxBtnColorPinkContent.Visibility = Visibility.Visible;
- break;
- case 7:
- ViewboxBtnColorTealContent.Visibility = Visibility.Visible;
- break;
- case 8:
- ViewboxBtnColorOrangeContent.Visibility = Visibility.Visible;
- break;
- }
- }
-
- private void BtnColorBlack_Click(object sender, RoutedEventArgs e) {
- if (currentMode == 0) {
- lastDesktopInkColor = 0;
- } else {
- lastBoardInkColor = 0;
- }
- forceEraser = false;
- ColorSwitchCheck();
- }
-
- private void BtnColorRed_Click(object sender, RoutedEventArgs e) {
- if (currentMode == 0) {
- lastDesktopInkColor = 1;
- } else {
- lastBoardInkColor = 1;
- }
- forceEraser = false;
- ColorSwitchCheck();
- }
-
- private void BtnColorGreen_Click(object sender, RoutedEventArgs e) {
- if (currentMode == 0) {
- lastDesktopInkColor = 2;
- } else {
- lastBoardInkColor = 2;
- }
- forceEraser = false;
- ColorSwitchCheck();
- }
-
- private void BtnColorBlue_Click(object sender, RoutedEventArgs e) {
- if (currentMode == 0) {
- lastDesktopInkColor = 3;
- } else {
- lastBoardInkColor = 3;
- }
- forceEraser = false;
- ColorSwitchCheck();
- }
-
- private void BtnColorYellow_Click(object sender, RoutedEventArgs e) {
- if (currentMode == 0) {
- lastDesktopInkColor = 4;
- } else {
- lastBoardInkColor = 4;
- }
- forceEraser = false;
- ColorSwitchCheck();
- }
-
- private void BtnColorWhite_Click(object sender, RoutedEventArgs e) {
- if (currentMode == 0) {
- lastDesktopInkColor = 5;
- } else {
- lastBoardInkColor = 5;
- }
- forceEraser = false;
- ColorSwitchCheck();
- }
-
- private void BtnColorPink_Click(object sender, RoutedEventArgs e) {
- if (currentMode == 0) {
- lastDesktopInkColor = 6;
- } else {
- lastBoardInkColor = 6;
- }
- forceEraser = false;
- ColorSwitchCheck();
- }
-
- private void BtnColorOrange_Click(object sender, RoutedEventArgs e)
- {
- if (currentMode == 0)
- {
- lastDesktopInkColor = 8;
- }
- else
- {
- lastBoardInkColor = 8;
- }
- forceEraser = false;
- ColorSwitchCheck();
- }
-
- private void BtnColorTeal_Click(object sender, RoutedEventArgs e)
- {
- if (currentMode == 0)
- {
- lastDesktopInkColor = 7;
- }
- else
- {
- lastBoardInkColor = 7;
- }
- forceEraser = false;
- ColorSwitchCheck();
- }
-
- private Color StringToColor(string colorStr) {
- Byte[] argb = new Byte[4];
- for (int i = 0; i < 4; i++) {
- char[] charArray = colorStr.Substring(i * 2 + 1, 2).ToCharArray();
- Byte b1 = toByte(charArray[0]);
- Byte b2 = toByte(charArray[1]);
- argb[i] = (Byte)(b2 | (b1 << 4));
- }
- return Color.FromArgb(argb[0], argb[1], argb[2], argb[3]);//#FFFFFFFF
- }
-
- private static byte toByte(char c) {
- byte b = (byte)"0123456789ABCDEF".IndexOf(c);
- return b;
- }
-
- #endregion
}
}
\ No newline at end of file
diff --git a/Ink Canvas/MainWindow_cs/MW_Settings.cs b/Ink Canvas/MainWindow_cs/MW_Settings.cs
index ed0b830..928a4fd 100644
--- a/Ink Canvas/MainWindow_cs/MW_Settings.cs
+++ b/Ink Canvas/MainWindow_cs/MW_Settings.cs
@@ -198,6 +198,58 @@ namespace Ink_Canvas {
{
if (!isLoaded) return;
Settings.Canvas.EraserSize = ComboBoxEraserSizeFloatingBar.SelectedIndex;
+ ComboBoxEraserSize.SelectedIndex = ComboBoxEraserSizeFloatingBar.SelectedIndex;
+ if (Settings.Canvas.EraserShapeType == 0)
+ {
+ double k = 1;
+ switch (ComboBoxEraserSizeFloatingBar.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)
+ {
+ double k = 1;
+ switch (ComboBoxEraserSizeFloatingBar.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);
+ }
+ inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
+ inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint;
+ SaveSettingsToFile();
+ }
+
+ private void SwitchToCircleEraser(object sender, MouseButtonEventArgs e)
+ {
+ if (!isLoaded) return;
+ Settings.Canvas.EraserShapeType = 0;
+ SaveSettingsToFile();
+ CheckEraserTypeTab();
double k = 1;
switch (ComboBoxEraserSizeFloatingBar.SelectedIndex)
{
@@ -215,10 +267,35 @@ namespace Ink_Canvas {
break;
}
inkCanvas.EraserShape = new EllipseStylusShape(k * 90, k * 90);
- // inkCanvas.EraserShape = new RectangleStylusShape(k * 90, k * 90);
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint;
+ }
+
+ private void SwitchToRectangleEraser(object sender, MouseButtonEventArgs e)
+ {
+ if (!isLoaded) return;
+ Settings.Canvas.EraserShapeType = 1;
SaveSettingsToFile();
+ CheckEraserTypeTab();
+ double k = 1;
+ switch (ComboBoxEraserSizeFloatingBar.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);
+ inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
+ inkCanvas.EditingMode = InkCanvasEditingMode.EraseByPoint;
}
@@ -232,6 +309,17 @@ namespace Ink_Canvas {
SaveSettingsToFile();
}
+ private void HighlighterWidthSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
+ {
+ if (!isLoaded) return;
+ // if (sender == BoardInkWidthSlider) InkWidthSlider.Value = ((Slider)sender).Value;
+ // if (sender == InkWidthSlider) BoardInkWidthSlider.Value = ((Slider)sender).Value;
+ drawingAttributes.Height = ((Slider)sender).Value;
+ drawingAttributes.Width = ((Slider)sender).Value / 2;
+ Settings.Canvas.HighlighterWidth = ((Slider)sender).Value;
+ SaveSettingsToFile();
+ }
+
private void InkAlphaSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
{
if (!isLoaded) return;
@@ -397,6 +485,13 @@ namespace Ink_Canvas {
SaveSettingsToFile();
}
+ private void ToggleSwitchClearCanvasAndClearTimeMachine_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!isLoaded) return;
+ Settings.Canvas.ClearCanvasAndClearTimeMachine = ToggleSwitchClearCanvasAndClearTimeMachine.IsOn;
+ SaveSettingsToFile();
+ }
+
private void ToggleSwitchFitToCurve_Toggled(object sender, RoutedEventArgs e)
{
if (!isLoaded) return;
@@ -642,9 +737,12 @@ namespace Ink_Canvas {
Settings.Canvas.InkWidth = 2.5;
Settings.Canvas.IsShowCursor = false;
Settings.Canvas.InkStyle = 0;
+ Settings.Canvas.HighlighterWidth = 20;
Settings.Canvas.EraserSize = 1;
Settings.Canvas.EraserType = 0;
+ Settings.Canvas.EraserShapeType = 1;
Settings.Canvas.HideStrokeWhenSelecting = false;
+ Settings.Canvas.ClearCanvasAndClearTimeMachine = false;
Settings.Canvas.FitToCurve = true;
Settings.Canvas.UsingWhiteboard = false;
Settings.Canvas.HyperbolaAsymptoteOption = 0;
diff --git a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
index 2d5e04d..504a1c7 100644
--- a/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
+++ b/Ink Canvas/MainWindow_cs/MW_SettingsToLoad.cs
@@ -3,6 +3,8 @@ using Newtonsoft.Json;
using System;
using System.Reflection;
using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Ink;
using System.Windows.Media;
using File = System.IO.File;
@@ -55,7 +57,7 @@ namespace Ink_Canvas {
ToggleSwitchIsAutoUpdate.IsOn = true;
AutoUpdate();
}
- ToggleSwitchIsAutoUpdateWithSilence.Visibility = Settings.Startup.IsAutoUpdate ? Visibility.Visible : Visibility.Collapsed;
+ // ToggleSwitchIsAutoUpdateWithSilence.Visibility = Settings.Startup.IsAutoUpdate ? Visibility.Visible : Visibility.Collapsed;
if (Settings.Startup.IsAutoUpdateWithSilence) {
ToggleSwitchIsAutoUpdateWithSilence.IsOn = true;
}
@@ -290,6 +292,7 @@ namespace Ink_Canvas {
drawingAttributes.Width = Settings.Canvas.InkWidth;
InkWidthSlider.Value = Settings.Canvas.InkWidth * 2;
+ HighlighterWidthSlider.Value = Settings.Canvas.HighlighterWidth;
ComboBoxHyperbolaAsymptoteOption.SelectedIndex = (int)Settings.Canvas.HyperbolaAsymptoteOption;
@@ -313,6 +316,58 @@ namespace Ink_Canvas {
ComboBoxEraserSize.SelectedIndex = Settings.Canvas.EraserSize;
ComboBoxEraserSizeFloatingBar.SelectedIndex = Settings.Canvas.EraserSize;
+ if (Settings.Canvas.ClearCanvasAndClearTimeMachine==true) {
+ ToggleSwitchClearCanvasAndClearTimeMachine.IsOn = true;
+ } else
+ {
+ ToggleSwitchClearCanvasAndClearTimeMachine.IsOn = false;
+ }
+
+ if (Settings.Canvas.EraserShapeType==0)
+ {
+ double k = 1;
+ switch (Settings.Canvas.EraserSize)
+ {
+ 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);
+ inkCanvas.EditingMode = InkCanvasEditingMode.None;
+
+ } else if (Settings.Canvas.EraserShapeType == 1)
+ {
+ double k = 1;
+ switch (Settings.Canvas.EraserSize)
+ {
+ 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);
+ inkCanvas.EditingMode = InkCanvasEditingMode.None;
+ }
+
+ CheckEraserTypeTab();
+
if (Settings.Canvas.HideStrokeWhenSelecting) {
ToggleSwitchHideStrokeWhenSelecting.IsOn = true;
} else {
diff --git a/Ink Canvas/MainWindow_cs/MW_SimulatePressure&InkToShape.cs b/Ink Canvas/MainWindow_cs/MW_SimulatePressure&InkToShape.cs
index a5bd82f..777d196 100644
--- a/Ink Canvas/MainWindow_cs/MW_SimulatePressure&InkToShape.cs
+++ b/Ink Canvas/MainWindow_cs/MW_SimulatePressure&InkToShape.cs
@@ -311,68 +311,75 @@ namespace Ink_Canvas {
switch (Settings.Canvas.InkStyle) {
case 1:
- try {
- StylusPointCollection stylusPoints = new StylusPointCollection();
- int n = e.Stroke.StylusPoints.Count - 1;
- string s = "";
+ if (penType == 0)
+ {
+ try {
+ StylusPointCollection stylusPoints = new StylusPointCollection();
+ int n = e.Stroke.StylusPoints.Count - 1;
+ string s = "";
- for (int i = 0; i <= n; i++) {
- double speed = GetPointSpeed(e.Stroke.StylusPoints[Math.Max(i - 1, 0)].ToPoint(), e.Stroke.StylusPoints[i].ToPoint(), e.Stroke.StylusPoints[Math.Min(i + 1, n)].ToPoint());
- s += speed.ToString() + "\t";
- StylusPoint point = new StylusPoint();
- if (speed >= 0.25) {
- point.PressureFactor = (float)(0.5 - 0.3 * (Math.Min(speed, 1.5) - 0.3) / 1.2);
- } else if (speed >= 0.05) {
- point.PressureFactor = (float)0.5;
- } else {
- point.PressureFactor = (float)(0.5 + 0.4 * (0.05 - speed) / 0.05);
+ for (int i = 0; i <= n; i++) {
+ double speed = GetPointSpeed(e.Stroke.StylusPoints[Math.Max(i - 1, 0)].ToPoint(), e.Stroke.StylusPoints[i].ToPoint(), e.Stroke.StylusPoints[Math.Min(i + 1, n)].ToPoint());
+ s += speed.ToString() + "\t";
+ StylusPoint point = new StylusPoint();
+ if (speed >= 0.25) {
+ point.PressureFactor = (float)(0.5 - 0.3 * (Math.Min(speed, 1.5) - 0.3) / 1.2);
+ } else if (speed >= 0.05) {
+ point.PressureFactor = (float)0.5;
+ } else {
+ point.PressureFactor = (float)(0.5 + 0.4 * (0.05 - speed) / 0.05);
+ }
+ point.X = e.Stroke.StylusPoints[i].X;
+ point.Y = e.Stroke.StylusPoints[i].Y;
+ stylusPoints.Add(point);
}
- point.X = e.Stroke.StylusPoints[i].X;
- point.Y = e.Stroke.StylusPoints[i].Y;
- stylusPoints.Add(point);
- }
- e.Stroke.StylusPoints = stylusPoints;
- } catch {
+ e.Stroke.StylusPoints = stylusPoints;
+ } catch {
+ }
}
+
break;
case 0:
- try {
- StylusPointCollection stylusPoints = new StylusPointCollection();
- int n = e.Stroke.StylusPoints.Count - 1;
- double pressure = 0.1;
- int x = 10;
- if (n == 1) return;
- if (n >= x) {
- for (int i = 0; i < n - x; i++) {
- StylusPoint point = new StylusPoint();
+ if (penType==0)
+ {
+ try {
+ StylusPointCollection stylusPoints = new StylusPointCollection();
+ int n = e.Stroke.StylusPoints.Count - 1;
+ double pressure = 0.1;
+ int x = 10;
+ if (n == 1) return;
+ if (n >= x) {
+ for (int i = 0; i < n - x; i++) {
+ StylusPoint point = new StylusPoint();
- point.PressureFactor = (float)0.5;
- point.X = e.Stroke.StylusPoints[i].X;
- point.Y = e.Stroke.StylusPoints[i].Y;
- stylusPoints.Add(point);
- }
- for (int i = n - x; i <= n; i++) {
- StylusPoint point = new StylusPoint();
+ point.PressureFactor = (float)0.5;
+ point.X = e.Stroke.StylusPoints[i].X;
+ point.Y = e.Stroke.StylusPoints[i].Y;
+ stylusPoints.Add(point);
+ }
+ for (int i = n - x; i <= n; i++) {
+ StylusPoint point = new StylusPoint();
- point.PressureFactor = (float)((0.5 - pressure) * (n - i) / x + pressure);
- point.X = e.Stroke.StylusPoints[i].X;
- point.Y = e.Stroke.StylusPoints[i].Y;
- stylusPoints.Add(point);
- }
- } else {
- for (int i = 0; i <= n; i++) {
- StylusPoint point = new StylusPoint();
+ point.PressureFactor = (float)((0.5 - pressure) * (n - i) / x + pressure);
+ point.X = e.Stroke.StylusPoints[i].X;
+ point.Y = e.Stroke.StylusPoints[i].Y;
+ stylusPoints.Add(point);
+ }
+ } else {
+ for (int i = 0; i <= n; i++) {
+ StylusPoint point = new StylusPoint();
- point.PressureFactor = (float)(0.4 * (n - i) / n + pressure);
- point.X = e.Stroke.StylusPoints[i].X;
- point.Y = e.Stroke.StylusPoints[i].Y;
- stylusPoints.Add(point);
+ point.PressureFactor = (float)(0.4 * (n - i) / n + pressure);
+ point.X = e.Stroke.StylusPoints[i].X;
+ point.Y = e.Stroke.StylusPoints[i].Y;
+ stylusPoints.Add(point);
+ }
}
+ e.Stroke.StylusPoints = stylusPoints;
+ } catch {
+
}
- e.Stroke.StylusPoints = stylusPoints;
- } catch {
-
}
break;
case 3: //根据 mode == 0 改写,目前暂未完成
@@ -472,7 +479,7 @@ namespace Ink_Canvas {
}
public StylusPointCollection GenerateFakePressureTriangle(StylusPointCollection points) {
- if (Settings.InkToShape.IsInkToShapeNoFakePressureTriangle == true)
+ if (Settings.InkToShape.IsInkToShapeNoFakePressureTriangle == true || penType==1)
{
var newPoint = new StylusPointCollection();
newPoint.Add(new StylusPoint(points[0].X, points[0].Y));
@@ -508,7 +515,7 @@ namespace Ink_Canvas {
}
public StylusPointCollection GenerateFakePressureRectangle(StylusPointCollection points) {
- if (Settings.InkToShape.IsInkToShapeNoFakePressureRectangle == true) {
+ if (Settings.InkToShape.IsInkToShapeNoFakePressureRectangle == true || penType == 1) {
return points;
} else
{
diff --git a/Ink Canvas/Resources/Icons-png/transparent-grid.png b/Ink Canvas/Resources/Icons-png/transparent-grid.png
new file mode 100644
index 0000000..21c0146
Binary files /dev/null and b/Ink Canvas/Resources/Icons-png/transparent-grid.png differ
diff --git a/Ink Canvas/Resources/Settings.cs b/Ink Canvas/Resources/Settings.cs
index e6f4efc..2abb028 100644
--- a/Ink Canvas/Resources/Settings.cs
+++ b/Ink Canvas/Resources/Settings.cs
@@ -28,6 +28,8 @@ namespace Ink_Canvas
{
[JsonProperty("inkWidth")]
public double InkWidth { get; set; } = 2.5;
+ [JsonProperty("highlighterWidth")]
+ public double HighlighterWidth { get; set; } = 20;
[JsonProperty("inkAlpha")]
public double InkAlpha { get; set; } = 255;
[JsonProperty("isShowCursor")]
@@ -38,10 +40,14 @@ namespace Ink_Canvas
public int EraserSize { get; set; } = 2;
[JsonProperty("eraserType")]
public int EraserType { get; set; } = 0; // 0 - 图标切换模式 1 - 面积擦 2 - 线条擦
+ [JsonProperty("eraserShapeType")]
+ public int EraserShapeType { get; set; } = 0; // 0 - 圆形擦 1 - 黑板擦
[JsonProperty("hideStrokeWhenSelecting")]
public bool HideStrokeWhenSelecting { get; set; } = true;
[JsonProperty("fitToCurve")]
public bool FitToCurve { get; set; } = true;
+ [JsonProperty("clearCanvasAndClearTimeMachine")]
+ public bool ClearCanvasAndClearTimeMachine { get; set; } = false;
[JsonProperty("usingWhiteboard")]
public bool UsingWhiteboard { get; set; }
diff --git a/Ink Canvas/Resources/new-icons/highlighter-white.png b/Ink Canvas/Resources/new-icons/highlighter-white.png
new file mode 100644
index 0000000..527592a
Binary files /dev/null and b/Ink Canvas/Resources/new-icons/highlighter-white.png differ
diff --git a/Ink Canvas/Resources/new-icons/osu-lazer-triangles.png b/Ink Canvas/Resources/new-icons/osu-lazer-triangles.png
new file mode 100644
index 0000000..3b94d73
Binary files /dev/null and b/Ink Canvas/Resources/new-icons/osu-lazer-triangles.png differ
diff --git a/Ink Canvas/Resources/new-icons/pen-white.png b/Ink Canvas/Resources/new-icons/pen-white.png
new file mode 100644
index 0000000..0fda1ac
Binary files /dev/null and b/Ink Canvas/Resources/new-icons/pen-white.png differ