-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathPenSettingsWindow.xaml.cs
More file actions
92 lines (77 loc) · 3.58 KB
/
PenSettingsWindow.xaml.cs
File metadata and controls
92 lines (77 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using ShowWrite.Services;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using WinForms = System.Windows.Forms;
namespace ShowWrite
{
public partial class PenSettingsWindow : Window
{
public System.Windows.Media.Color SelectedColor { get; private set; }
public double SelectedPenWidth { get; private set; }
public double SelectedEraserWidth { get; private set; }
public bool UseTouchAreaForEraser { get; private set; } = false;
private readonly LanguageManager _languageManager;
public PenSettingsWindow(System.Windows.Media.Color currentColor, double currentPenWidth, double currentEraserWidth)
{
InitializeComponent();
SelectedColor = currentColor;
SelectedPenWidth = currentPenWidth;
SelectedEraserWidth = currentEraserWidth;
_languageManager = LanguageManager.Instance;
_languageManager.LanguageChanged += UpdateLanguage;
// 初始化UI
PenColorPreview.Background = new SolidColorBrush(SelectedColor);
PenWidthSlider.Value = SelectedPenWidth;
PenWidthValue.Text = SelectedPenWidth.ToString();
EraserWidthSlider.Value = SelectedEraserWidth;
EraserWidthValue.Text = SelectedEraserWidth.ToString();
// 绑定滑块值变化事件
PenWidthSlider.ValueChanged += PenWidthSlider_ValueChanged;
EraserWidthSlider.ValueChanged += EraserWidthSlider_ValueChanged;
// 默认使用滑块模式
UseTouchAreaForEraser = false;
}
private void UpdateLanguage()
{
// 更新窗口标题
Title = _languageManager.GetTranslation("PenSettings");
}
private void PenWidthSlider_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
{
PenWidthValue.Text = ((int)e.NewValue).ToString();
}
private void EraserWidthSlider_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<double> e)
{
EraserWidthValue.Text = ((int)e.NewValue).ToString();
}
private void ColorPreview_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (sender is Border border && border.Tag is string colorHex)
{
SelectedColor = (System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString(colorHex);
PenColorPreview.Background = new SolidColorBrush(SelectedColor);
}
}
private void CustomColorButton_Click(object sender, RoutedEventArgs e)
{
var dlg = new WinForms.ColorDialog();
dlg.Color = System.Drawing.Color.FromArgb(SelectedColor.A, SelectedColor.R, SelectedColor.G, SelectedColor.B);
if (dlg.ShowDialog() == WinForms.DialogResult.OK)
{
SelectedColor = System.Windows.Media.Color.FromArgb(dlg.Color.A, dlg.Color.R, dlg.Color.G, dlg.Color.B);
PenColorPreview.Background = new SolidColorBrush(SelectedColor);
}
}
private void Ok_Click(object sender, RoutedEventArgs e)
{
SelectedPenWidth = PenWidthSlider.Value;
SelectedEraserWidth = EraserWidthSlider.Value;
DialogResult = true;
}
private void Cancel_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
}
}
}