diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml index 18aa4d3d..8389308e 100644 --- a/Ink Canvas/MainWindow.xaml +++ b/Ink Canvas/MainWindow.xaml @@ -5219,89 +5219,10 @@ FontSize="11" /> - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -5434,188 +5254,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -7511,170 +6979,21 @@ FontSize="11" /> - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -7684,7 +7003,6 @@ - @@ -7692,355 +7010,22 @@ Orientation="Horizontal" Width="270"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + @@ -8098,21 +7083,6 @@ - - - - - @@ -8121,78 +7091,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Ink Canvas/MainWindow_cs/MW_Colors.cs b/Ink Canvas/MainWindow_cs/MW_Colors.cs index c3b444e4..29d52de1 100644 --- a/Ink Canvas/MainWindow_cs/MW_Colors.cs +++ b/Ink Canvas/MainWindow_cs/MW_Colors.cs @@ -283,26 +283,26 @@ namespace Ink_Canvas { // 亮系 // 亮色的红色 - BorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(239, 68, 68)); - BoardBorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(239, 68, 68)); + BorderPenColorRed.Color = Color.FromRgb(239, 68, 68); + BoardBorderPenColorRed.Color = Color.FromRgb(239, 68, 68); // 亮色的绿色 - BorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(34, 197, 94)); - BoardBorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(34, 197, 94)); + BorderPenColorGreen.Color = Color.FromRgb(34, 197, 94); + BoardBorderPenColorGreen.Color = Color.FromRgb(34, 197, 94); // 亮色的蓝色 - BorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(59, 130, 246)); - BoardBorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(59, 130, 246)); + BorderPenColorBlue.Color = Color.FromRgb(59, 130, 246); + BoardBorderPenColorBlue.Color = Color.FromRgb(59, 130, 246); // 亮色的黄色 - BorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(250, 204, 21)); - BoardBorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(250, 204, 21)); + BorderPenColorYellow.Color = Color.FromRgb(250, 204, 21); + BoardBorderPenColorYellow.Color = Color.FromRgb(250, 204, 21); // 亮色的粉色 - BorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(236, 72, 153)); - BoardBorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(236, 72, 153)); + BorderPenColorPink.Color = Color.FromRgb(236, 72, 153); + BoardBorderPenColorPink.Color = Color.FromRgb(236, 72, 153); // 亮色的Teal - BorderPenColorTeal.Background = new SolidColorBrush(Color.FromRgb(20, 184, 166)); - BoardBorderPenColorTeal.Background = new SolidColorBrush(Color.FromRgb(20, 184, 166)); + BorderPenColorTeal.Color = Color.FromRgb(20, 184, 166); + BoardBorderPenColorTeal.Color = Color.FromRgb(20, 184, 166); // 亮色的Orange - BorderPenColorOrange.Background = new SolidColorBrush(Color.FromRgb(249, 115, 22)); - BoardBorderPenColorOrange.Background = new SolidColorBrush(Color.FromRgb(249, 115, 22)); + BorderPenColorOrange.Color = Color.FromRgb(249, 115, 22); + BoardBorderPenColorOrange.Color = Color.FromRgb(249, 115, 22); var newImageSource = new BitmapImage(); newImageSource.BeginInit(); @@ -319,26 +319,26 @@ namespace Ink_Canvas { // 暗系 // 暗色的红色 - BorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(220, 38, 38)); - BoardBorderPenColorRed.Background = new SolidColorBrush(Color.FromRgb(220, 38, 38)); + BorderPenColorRed.Color = Color.FromRgb(220, 38, 38); + BoardBorderPenColorRed.Color = Color.FromRgb(220, 38, 38); // 暗色的绿色 - BorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(22, 163, 74)); - BoardBorderPenColorGreen.Background = new SolidColorBrush(Color.FromRgb(22, 163, 74)); + BorderPenColorGreen.Color = Color.FromRgb(22, 163, 74); + BoardBorderPenColorGreen.Color = Color.FromRgb(22, 163, 74); // 暗色的蓝色 - BorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(37, 99, 235)); - BoardBorderPenColorBlue.Background = new SolidColorBrush(Color.FromRgb(37, 99, 235)); + BorderPenColorBlue.Color = Color.FromRgb(37, 99, 235); + BoardBorderPenColorBlue.Color = Color.FromRgb(37, 99, 235); // 暗色的黄色 - BorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(234, 179, 8)); - BoardBorderPenColorYellow.Background = new SolidColorBrush(Color.FromRgb(234, 179, 8)); + BorderPenColorYellow.Color = Color.FromRgb(234, 179, 8); + BoardBorderPenColorYellow.Color = Color.FromRgb(234, 179, 8); // 暗色的紫色对应亮色的粉色 - BorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(147, 51, 234)); - BoardBorderPenColorPink.Background = new SolidColorBrush(Color.FromRgb(147, 51, 234)); + BorderPenColorPink.Color = Color.FromRgb(147, 51, 234); + BoardBorderPenColorPink.Color = Color.FromRgb(147, 51, 234); // 暗色的Teal - BorderPenColorTeal.Background = new SolidColorBrush(Color.FromRgb(13, 148, 136)); - BoardBorderPenColorTeal.Background = new SolidColorBrush(Color.FromRgb(13, 148, 136)); + BorderPenColorTeal.Color = Color.FromRgb(13, 148, 136); + BoardBorderPenColorTeal.Color = Color.FromRgb(13, 148, 136); // 暗色的Orange - BorderPenColorOrange.Background = new SolidColorBrush(Color.FromRgb(234, 88, 12)); - BoardBorderPenColorOrange.Background = new SolidColorBrush(Color.FromRgb(234, 88, 12)); + BorderPenColorOrange.Color = Color.FromRgb(234, 88, 12); + BoardBorderPenColorOrange.Color = Color.FromRgb(234, 88, 12); var newImageSource = new BitmapImage(); newImageSource.BeginInit(); @@ -353,127 +353,129 @@ namespace Ink_Canvas } // 改变选中提示 - 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; + BorderPenColorBlack.IsChecked = false; + BorderPenColorBlue.IsChecked = false; + BorderPenColorGreen.IsChecked = false; + BorderPenColorRed.IsChecked = false; + BorderPenColorYellow.IsChecked = false; + BorderPenColorWhite.IsChecked = false; + BorderPenColorPink.IsChecked = false; + BorderPenColorTeal.IsChecked = false; + BorderPenColorOrange.IsChecked = false; - 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; - BoardViewboxBtnColorTealContent.Visibility = Visibility.Collapsed; - BoardViewboxBtnColorOrangeContent.Visibility = Visibility.Collapsed; + BoardBorderPenColorBlack.IsChecked = false; + BoardBorderPenColorBlue.IsChecked = false; + BoardBorderPenColorGreen.IsChecked = false; + BoardBorderPenColorRed.IsChecked = false; + BoardBorderPenColorYellow.IsChecked = false; + BoardBorderPenColorWhite.IsChecked = false; + BoardBorderPenColorPink.IsChecked = false; + BoardBorderPenColorTeal.IsChecked = false; + BoardBorderPenColorOrange.IsChecked = false; - 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; + HighlighterPenColorBlack.IsChecked = false; + HighlighterPenColorBlue.IsChecked = false; + HighlighterPenColorGreen.IsChecked = false; + HighlighterPenColorOrange.IsChecked = false; + HighlighterPenPenColorPurple.IsChecked = false; + HighlighterPenColorRed.IsChecked = false; + HighlighterPenColorTeal.IsChecked = false; + HighlighterPenColorWhite.IsChecked = false; + HighlighterPenColorYellow.IsChecked = false; + HighlighterPenColorZinc.IsChecked = false; - BoardHighlighterPenViewboxBtnColorBlackContent.Visibility = Visibility.Collapsed; - BoardHighlighterPenViewboxBtnColorBlueContent.Visibility = Visibility.Collapsed; - BoardHighlighterPenViewboxBtnColorGreenContent.Visibility = Visibility.Collapsed; - BoardHighlighterPenViewboxBtnColorOrangeContent.Visibility = Visibility.Collapsed; - BoardHighlighterPenViewboxBtnColorPurpleContent.Visibility = Visibility.Collapsed; - BoardHighlighterPenViewboxBtnColorRedContent.Visibility = Visibility.Collapsed; - BoardHighlighterPenViewboxBtnColorTealContent.Visibility = Visibility.Collapsed; - BoardHighlighterPenViewboxBtnColorWhiteContent.Visibility = Visibility.Collapsed; - BoardHighlighterPenViewboxBtnColorYellowContent.Visibility = Visibility.Collapsed; - BoardHighlighterPenViewboxBtnColorZincContent.Visibility = Visibility.Collapsed; + BoardHighlighterPenColorBlack.IsChecked = false; + BoardHighlighterPenColorBlue.IsChecked = false; + BoardHighlighterPenColorGreen.IsChecked = false; + BoardHighlighterPenColorOrange.IsChecked = false; + BoardHighlighterPenPenColorPurple.IsChecked = false; + BoardHighlighterPenColorRed.IsChecked = false; + BoardHighlighterPenColorTeal.IsChecked = false; + BoardHighlighterPenColorWhite.IsChecked = false; + BoardHighlighterPenColorYellow.IsChecked = false; + BoardHighlighterPenColorZinc.IsChecked = false; switch (inkColor) { case 0: - ViewboxBtnColorBlackContent.Visibility = Visibility.Visible; - BoardViewboxBtnColorBlackContent.Visibility = Visibility.Visible; + BorderPenColorBlack.IsChecked = true; + BoardBorderPenColorBlack.IsChecked = true; break; case 1: - ViewboxBtnColorRedContent.Visibility = Visibility.Visible; - BoardViewboxBtnColorRedContent.Visibility = Visibility.Visible; + BorderPenColorRed.IsChecked = true; + BoardBorderPenColorRed.IsChecked = true; break; case 2: - ViewboxBtnColorGreenContent.Visibility = Visibility.Visible; - BoardViewboxBtnColorGreenContent.Visibility = Visibility.Visible; + BorderPenColorGreen.IsChecked = true; + BoardBorderPenColorGreen.IsChecked = true; break; case 3: - ViewboxBtnColorBlueContent.Visibility = Visibility.Visible; - BoardViewboxBtnColorBlueContent.Visibility = Visibility.Visible; + BorderPenColorBlue.IsChecked = true; + BoardBorderPenColorBlue.IsChecked = true; break; case 4: - ViewboxBtnColorYellowContent.Visibility = Visibility.Visible; - BoardViewboxBtnColorYellowContent.Visibility = Visibility.Visible; + BorderPenColorYellow.IsChecked = true; + BoardBorderPenColorYellow.IsChecked = true; break; case 5: - ViewboxBtnColorWhiteContent.Visibility = Visibility.Visible; - BoardViewboxBtnColorWhiteContent.Visibility = Visibility.Visible; + BorderPenColorWhite.IsChecked = true; + BoardBorderPenColorWhite.IsChecked = true; break; case 6: - ViewboxBtnColorPinkContent.Visibility = Visibility.Visible; - BoardViewboxBtnColorPinkContent.Visibility = Visibility.Visible; + BorderPenColorPink.IsChecked = true; + BoardBorderPenColorPink.IsChecked = true; break; case 7: - ViewboxBtnColorTealContent.Visibility = Visibility.Visible; + BorderPenColorTeal.IsChecked = true; + BoardBorderPenColorTeal.IsChecked = true; break; case 8: - ViewboxBtnColorOrangeContent.Visibility = Visibility.Visible; + BorderPenColorOrange.IsChecked = true; + BoardBorderPenColorOrange.IsChecked = true; break; } switch (highlighterColor) { case 100: - HighlighterPenViewboxBtnColorBlackContent.Visibility = Visibility.Visible; - BoardHighlighterPenViewboxBtnColorBlackContent.Visibility = Visibility.Visible; + HighlighterPenColorBlack.IsChecked = true; + BoardHighlighterPenColorBlack.IsChecked = true; break; case 101: - HighlighterPenViewboxBtnColorWhiteContent.Visibility = Visibility.Visible; - BoardHighlighterPenViewboxBtnColorWhiteContent.Visibility = Visibility.Visible; + HighlighterPenColorWhite.IsChecked = true; + BoardHighlighterPenColorWhite.IsChecked = true; break; case 102: - HighlighterPenViewboxBtnColorRedContent.Visibility = Visibility.Visible; - BoardHighlighterPenViewboxBtnColorRedContent.Visibility = Visibility.Visible; + HighlighterPenColorRed.IsChecked = true; + BoardHighlighterPenColorRed.IsChecked = true; break; case 103: - HighlighterPenViewboxBtnColorYellowContent.Visibility = Visibility.Visible; - BoardHighlighterPenViewboxBtnColorYellowContent.Visibility = Visibility.Visible; + HighlighterPenColorYellow.IsChecked = true; + BoardHighlighterPenColorYellow.IsChecked = true; break; case 104: - HighlighterPenViewboxBtnColorGreenContent.Visibility = Visibility.Visible; - BoardHighlighterPenViewboxBtnColorGreenContent.Visibility = Visibility.Visible; + HighlighterPenColorGreen.IsChecked = true; + BoardHighlighterPenColorGreen.IsChecked = true; break; case 105: - HighlighterPenViewboxBtnColorZincContent.Visibility = Visibility.Visible; - BoardHighlighterPenViewboxBtnColorZincContent.Visibility = Visibility.Visible; + HighlighterPenColorZinc.IsChecked = true; + BoardHighlighterPenColorZinc.IsChecked = true; break; case 106: - HighlighterPenViewboxBtnColorBlueContent.Visibility = Visibility.Visible; - BoardHighlighterPenViewboxBtnColorBlueContent.Visibility = Visibility.Visible; + HighlighterPenColorBlue.IsChecked = true; + BoardHighlighterPenColorBlue.IsChecked = true; break; case 107: - HighlighterPenViewboxBtnColorPurpleContent.Visibility = Visibility.Visible; - BoardHighlighterPenViewboxBtnColorPurpleContent.Visibility = Visibility.Visible; + HighlighterPenPenColorPurple.IsChecked = true; + BoardHighlighterPenPenColorPurple.IsChecked = true; break; case 108: - HighlighterPenViewboxBtnColorTealContent.Visibility = Visibility.Visible; - BoardHighlighterPenViewboxBtnColorTealContent.Visibility = Visibility.Visible; + HighlighterPenColorTeal.IsChecked = true; + BoardHighlighterPenColorTeal.IsChecked = true; break; case 109: - HighlighterPenViewboxBtnColorOrangeContent.Visibility = Visibility.Visible; - BoardHighlighterPenViewboxBtnColorOrangeContent.Visibility = Visibility.Visible; + HighlighterPenColorOrange.IsChecked = true; + BoardHighlighterPenColorOrange.IsChecked = true; break; } diff --git a/InkCanvas.Controls/PenColorButton.xaml b/InkCanvas.Controls/PenColorButton.xaml new file mode 100644 index 00000000..ddf98045 --- /dev/null +++ b/InkCanvas.Controls/PenColorButton.xaml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + diff --git a/InkCanvas.Controls/PenColorButton.xaml.cs b/InkCanvas.Controls/PenColorButton.xaml.cs new file mode 100644 index 00000000..b3b773f8 --- /dev/null +++ b/InkCanvas.Controls/PenColorButton.xaml.cs @@ -0,0 +1,141 @@ +using System.Windows; +using System.Windows.Controls; +using System.Windows.Input; +using System.Windows.Media; + +namespace Ink_Canvas.Controls +{ + public partial class PenColorButton : UserControl + { + public static readonly DependencyProperty ColorProperty = DependencyProperty.Register( + nameof(Color), typeof(Color), typeof(PenColorButton), + new PropertyMetadata(Colors.Black, OnColorChanged)); + + private static void OnColorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var button = (PenColorButton)d; + if (button.ColorBorder != null) + { + button.ColorBorder.Background = new SolidColorBrush((Color)e.NewValue); + } + } + + public Color Color + { + get => (Color)GetValue(ColorProperty); + set => SetValue(ColorProperty, value); + } + + public static readonly DependencyProperty BorderBrushColorProperty = DependencyProperty.Register( + nameof(BorderBrushColor), typeof(Color), typeof(PenColorButton), + new PropertyMetadata(Colors.Gray, OnBorderBrushColorChanged)); + + private static void OnBorderBrushColorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var button = (PenColorButton)d; + if (button.ButtonBorder != null) + { + button.ButtonBorder.BorderBrush = new SolidColorBrush((Color)e.NewValue); + } + } + + public Color BorderBrushColor + { + get => (Color)GetValue(BorderBrushColorProperty); + set => SetValue(BorderBrushColorProperty, value); + } + + public static readonly DependencyProperty IsHighlighterProperty = DependencyProperty.Register( + nameof(IsHighlighter), typeof(bool), typeof(PenColorButton), + new PropertyMetadata(false, OnIsHighlighterChanged)); + + private static void OnIsHighlighterChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var button = (PenColorButton)d; + if (button.TransparentGridImage != null && button.ColorBorder != null) + { + bool isHighlighter = (bool)e.NewValue; + button.TransparentGridImage.Visibility = isHighlighter ? Visibility.Visible : Visibility.Collapsed; + button.ColorBorder.Opacity = isHighlighter ? 0.75 : 1; + } + } + + public bool IsHighlighter + { + get => (bool)GetValue(IsHighlighterProperty); + set => SetValue(IsHighlighterProperty, value); + } + + public static readonly DependencyProperty IsCheckedProperty = DependencyProperty.Register( + nameof(IsChecked), typeof(bool), typeof(PenColorButton), + new PropertyMetadata(false, OnIsCheckedChanged)); + + private static void OnIsCheckedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var button = (PenColorButton)d; + if (button.CheckViewbox != null) + { + button.CheckViewbox.Visibility = (bool)e.NewValue ? Visibility.Visible : Visibility.Collapsed; + } + } + + public bool IsChecked + { + get => (bool)GetValue(IsCheckedProperty); + set => SetValue(IsCheckedProperty, value); + } + + public static readonly DependencyProperty CheckIconSourceProperty = DependencyProperty.Register( + nameof(CheckIconSource), typeof(string), typeof(PenColorButton), + new PropertyMetadata("/Resources/new-icons/checked-white.png", OnCheckIconSourceChanged)); + + private static void OnCheckIconSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var button = (PenColorButton)d; + if (button.CheckImage != null && e.NewValue is string source) + { + button.CheckImage.Source = new System.Windows.Media.Imaging.BitmapImage(new System.Uri(source, System.UriKind.Relative)); + } + } + + public string CheckIconSource + { + get => (string)GetValue(CheckIconSourceProperty); + set => SetValue(CheckIconSourceProperty, value); + } + + public event MouseButtonEventHandler ButtonMouseUp; + + public PenColorButton() + { + InitializeComponent(); + Loaded += PenColorButton_Loaded; + } + + private void PenColorButton_Loaded(object sender, RoutedEventArgs e) + { + ApplyProperties(); + } + + private void ApplyProperties() + { + if (ColorBorder != null) + ColorBorder.Background = new SolidColorBrush(Color); + if (ButtonBorder != null) + ButtonBorder.BorderBrush = new SolidColorBrush(BorderBrushColor); + if (TransparentGridImage != null) + TransparentGridImage.Visibility = IsHighlighter ? Visibility.Visible : Visibility.Collapsed; + if (ColorBorder != null) + ColorBorder.Opacity = IsHighlighter ? 0.75 : 1; + if (CheckViewbox != null) + CheckViewbox.Visibility = IsChecked ? Visibility.Visible : Visibility.Collapsed; + if (CheckImage != null && !string.IsNullOrEmpty(CheckIconSource)) + CheckImage.Source = new System.Windows.Media.Imaging.BitmapImage(new System.Uri(CheckIconSource, System.UriKind.Relative)); + } + + private void ButtonBorder_MouseUp(object sender, MouseButtonEventArgs e) + { + ButtonMouseUp?.Invoke(this, e); + } + } +}