diff --git a/Ink Canvas/ChangeLogWindow.xaml.cs b/Ink Canvas/ChangeLogWindow.xaml.cs
index 5b0c5963..f29e018d 100644
--- a/Ink Canvas/ChangeLogWindow.xaml.cs
+++ b/Ink Canvas/ChangeLogWindow.xaml.cs
@@ -46,12 +46,12 @@ private void Window_Loaded(object sender, RoutedEventArgs e)
//Version 2.1.2-release
TextBlockChangeLog.Text = "" +
- "1. 支持多页白板/黑板\n" +
- "2. 支持撤销\n" +
- "3. 双击清屏即可在清屏的同时隐藏画板\n" +
+ "1. 支持模拟笔锋,字迹更美观\n" +
+ "2. 支持自动查杀希沃部分软件\n" +
+ "3. 检测到有隐藏幻灯片时可一键取消隐藏\n" +
"4. 对深浅主题下墨迹颜色的优化\n" +
"\n" +
- "目前基本可以取代“希沃白板”";
+ "目前非联网功能可以完全取代“希沃白板 5”";
TextBlockSuggestionTitle.Visibility = Visibility.Collapsed;
//TextBlockSuggestion.Text = "老师讲评试卷可以点击右侧的背景和深色按钮,即可启动黑板功能(同样支持用笔来擦除),\n双指可以缩放和拖动,左边也会有工具栏方便画图形。";
diff --git a/Ink Canvas/Ink Canvas.csproj b/Ink Canvas/Ink Canvas.csproj
index 3aa9cd1a..5bc4a8a7 100644
--- a/Ink Canvas/Ink Canvas.csproj
+++ b/Ink Canvas/Ink Canvas.csproj
@@ -94,6 +94,9 @@
SettingsPage.xaml
+
+ WelcomeWindow.xaml
+
Designer
MSBuild:Compile
@@ -119,6 +122,10 @@
Designer
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index daf00ded..cf14d9d6 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -147,7 +147,13 @@
FontSize="14"/>
-
+
+
+
+
+
+
+
@@ -193,6 +199,12 @@
+
+
+
+
+
+
@@ -297,21 +309,46 @@
Margin="0,10,0,0" Width="{Binding ElementName=StackPanelMain, Path=ActualWidth}"
Click="BtnSwitch_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="{Binding ElementName=BtnExit, Path=Background}"/>
-
-
-
-
-
+
+
+
+
+
-
+ Click="BtnPen_Click" Foreground="{Binding ElementName=BtnExit, Path=Foreground}" Background="{Binding ElementName=BtnExit, Path=Background}">
+
+
diff --git a/Ink Canvas/MainWindow.xaml.cs b/Ink Canvas/MainWindow.xaml.cs
index a745e577..1aeb7551 100644
--- a/Ink Canvas/MainWindow.xaml.cs
+++ b/Ink Canvas/MainWindow.xaml.cs
@@ -43,11 +43,18 @@ public MainWindow()
{
InitializeComponent();
BorderSettings.Visibility = Visibility.Collapsed;
+
+ timerCheckPPT.Elapsed += TimerCheckPPT_Elapsed;
+ timerCheckPPT.Interval = 1000;
+
+ timerKillProcess.Elapsed += TimerKillProcess_Elapsed;
+ timerKillProcess.Interval = 5000;
}
Timer timerCheckPPT = new Timer();
+ Timer timerKillProcess = new Timer();
- Settings Settings = new Settings();
+ public static Settings Settings = new Settings();
private void Button_Click(object sender, RoutedEventArgs e)
{
@@ -145,51 +152,61 @@ private void Window_Loaded(object sender, RoutedEventArgs e)
TextBlockVersion.Text = version.ToString();
string lastVersion = "";
- try
- {
- lastVersion = File.ReadAllText(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "versions.ini");
- }
- catch { }
- if (!lastVersion.Contains(version.ToString()))
+ if (!File.Exists(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "versions.ini"))
{
- new ChangeLogWindow().ShowDialog();
- lastVersion += "\n" + version.ToString();
- File.WriteAllText("versions.ini", lastVersion.Trim());
+ new WelcomeWindow().ShowDialog();
}
- });
-
- try
- {
- if (response.Contains(""))
+ else
{
- string str = Strings.Mid(response, response.IndexOf("") + 9);
- if (str.Contains(""))
+ try
{
- str = Strings.Left(str, str.IndexOf("")).Trim();
- if (str.Length > 0)
- {
- string updateIP;
- int updatePort;
-
- string[] vs = str.Split(':');
- updateIP = vs[0];
- updatePort = int.Parse(vs[1]);
+ lastVersion = File.ReadAllText(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "versions.ini");
+ }
+ catch { }
+ if (!lastVersion.Contains(version.ToString()))
+ {
+ new ChangeLogWindow().ShowDialog();
+ lastVersion += "\n" + version.ToString();
+ File.WriteAllText("versions.ini", lastVersion.Trim());
+ }
- if (OAUS.Core.VersionHelper.HasNewVersion(GetIp(updateIP), updatePort))
+ //第二次启动时才可以进入检查版本更新模式
+ new Thread(new ThreadStart(() => {
+ try
+ {
+ if (response.Contains(""))
{
- string updateExePath = AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater\\AutoUpdater.exe";
- System.Diagnostics.Process myProcess = System.Diagnostics.Process.Start(updateExePath);
-
- Application.Current.Dispatcher.Invoke(() =>
+ string str = Strings.Mid(response, response.IndexOf("") + 9);
+ if (str.Contains(""))
{
- Application.Current.Shutdown();
- });
+ str = Strings.Left(str, str.IndexOf("")).Trim();
+ if (str.Length > 0)
+ {
+ string updateIP;
+ int updatePort;
+
+ string[] vs = str.Split(':');
+ updateIP = vs[0];
+ updatePort = int.Parse(vs[1]);
+
+ if (OAUS.Core.VersionHelper.HasNewVersion(GetIp(updateIP), updatePort))
+ {
+ string updateExePath = AppDomain.CurrentDomain.BaseDirectory + "AutoUpdater\\AutoUpdater.exe";
+ System.Diagnostics.Process myProcess = System.Diagnostics.Process.Start(updateExePath);
+
+ Application.Current.Dispatcher.Invoke(() =>
+ {
+ Application.Current.Shutdown();
+ });
+ }
+ }
+ }
}
}
- }
+ catch { }
+ })).Start();
}
- }
- catch { }
+ });
}
}
catch { }
@@ -311,8 +328,7 @@ private void LoadSettings(bool isStartup = true)
if (Settings.Behavior.PowerPointSupport)
{
- timerCheckPPT.Elapsed += TimerCheckPPT_Elapsed;
- timerCheckPPT.Interval = 1000;
+ ToggleSwitchSupportPowerPoint.IsOn = true;
timerCheckPPT.Start();
}
else
@@ -372,14 +388,90 @@ private void LoadSettings(bool isStartup = true)
ToggleSwitchShowCursor.IsOn = false;
inkCanvas.ForceCursor = false;
}
+
+ if (Settings.Canvas.InkStyle != 0)
+ {
+ ComboBoxPenStyle.SelectedIndex = Settings.Canvas.InkStyle;
+ }
}
else
{
Settings.Canvas = new Canvas();
}
+
+ if (Settings.Automation != null)
+ {
+ if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService)
+ {
+ timerKillProcess.Start();
+ }
+ else
+ {
+ timerKillProcess.Stop();
+ }
+
+ if (Settings.Automation.IsAutoKillEasiNote)
+ {
+ ToggleSwitchAutoKillEasiNote.IsOn = true;
+ }
+ else
+ {
+ ToggleSwitchAutoKillEasiNote.IsOn = false;
+ }
+
+ if (Settings.Automation.IsAutoKillPptService)
+ {
+ ToggleSwitchAutoKillPptService.IsOn = true;
+ }
+ else
+ {
+ ToggleSwitchAutoKillPptService.IsOn = false;
+ }
+ }
+ else
+ {
+ Settings.Automation = new Automation();
+ }
+ }
+
+ private void TimerKillProcess_Elapsed(object sender, ElapsedEventArgs e)
+ {
+ try
+ {
+ string arg = "/F";
+ if (Settings.Automation.IsAutoKillPptService)
+ {
+ Process[] processes = Process.GetProcessesByName("PPTService");
+ if (processes.Length > 0)
+ {
+ arg += " /IM PPTService.exe";
+ }
+ }
+ if (Settings.Automation.IsAutoKillEasiNote)
+ {
+ Process[] processes = Process.GetProcessesByName("EasiNote");
+ if (processes.Length > 0)
+ {
+ arg += " /IM EasiNote.exe";
+ }
+ }
+ if (arg != "/F")
+ {
+ Process p = new Process();
+ p.StartInfo = new ProcessStartInfo("taskkill", arg);
+ p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
+ p.Start();
+
+ if (arg.Contains("EasiNote"))
+ {
+ MessageBox.Show("检测到“希沃白板 5”,已自动关闭。");
+ }
+ }
+ }
+ catch { }
}
- string settingsFileName = "settings.json";
+ public static string settingsFileName = "settings.json";
bool isLoaded = false;
private void back_HotKey(object sender, ExecutedRoutedEventArgs e)
@@ -454,6 +546,7 @@ private void BtnErase_Click(object sender, RoutedEventArgs e)
inkCanvas.EditingMode = InkCanvasEditingMode.EraseByStroke;
drawingShapeMode = 0;
inkCanvas_EditingModeChanged(inkCanvas, null);
+ CancelSingleFingerDragMode();
}
private void BtnClear_Click(object sender, RoutedEventArgs e)
@@ -477,6 +570,16 @@ private void BtnClear_Click(object sender, RoutedEventArgs e)
}
inkCanvas.Strokes.Clear();
+
+ CancelSingleFingerDragMode();
+ }
+
+ private void CancelSingleFingerDragMode()
+ {
+ if (isSingleFingerDragMode)
+ {
+ BtnFingerDragMode_Click(BtnFingerDragMode, null);
+ }
}
private void BtnHideControl_Click(object sender, RoutedEventArgs e)
@@ -509,6 +612,32 @@ private void ColorSwitchCheck()
inkCanvas.IsManipulationEnabled = true;
drawingShapeMode = 0;
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
+ CancelSingleFingerDragMode();
+
+ // 改变选中提示
+ ViewboxBtnColorBlackContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorBlueContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorGreenContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorRedContent.Visibility = Visibility.Collapsed;
+ ViewboxBtnColorRedContent.Visibility = Visibility.Collapsed;
+ switch (inkColor)
+ {
+ case 0:
+ ViewboxBtnColorBlackContent.Visibility = Visibility.Visible;
+ break;
+ case 1:
+ ViewboxBtnColorRedContent.Visibility = Visibility.Visible;
+ break;
+ case 2:
+ ViewboxBtnColorGreenContent.Visibility = Visibility.Visible;
+ break;
+ case 3:
+ ViewboxBtnColorBlueContent.Visibility = Visibility.Visible;
+ break;
+ case 4:
+ ViewboxBtnColorYellowContent.Visibility = Visibility.Visible;
+ break;
+ }
}
private void BtnColorBlack_Click(object sender, RoutedEventArgs e)
@@ -860,6 +989,7 @@ private void BtnSwitchTheme_Click(object sender, RoutedEventArgs e)
BtnColorBlack.Background = Brushes.White;
BtnColorGreen.Background = new SolidColorBrush(StringToColor("#FF1ED760"));
BtnColorYellow.Background = new SolidColorBrush(StringToColor("#FFFFC000"));
+ SymbolIconBtnColorBlackContent.Foreground = Brushes.Black;
ThemeManager.Current.ApplicationTheme = ApplicationTheme.Dark;
if (inkColor == 0)
{
@@ -886,6 +1016,7 @@ private void BtnSwitchTheme_Click(object sender, RoutedEventArgs e)
BtnColorBlack.Background = Brushes.Black;
BtnColorGreen.Background = new SolidColorBrush(StringToColor("#FF169141"));
BtnColorYellow.Background = new SolidColorBrush(StringToColor("#FFF38B00"));
+ SymbolIconBtnColorBlackContent.Foreground = Brushes.White;
ThemeManager.Current.ApplicationTheme = ApplicationTheme.Light;
if (inkColor == 0)
{
@@ -1404,6 +1535,15 @@ private void ToggleSwitchSupportPowerPoint_Toggled(object sender, RoutedEventArg
Settings.Behavior.PowerPointSupport = ToggleSwitchSupportPowerPoint.IsOn;
SaveSettingsToFile();
+
+ if (Settings.Behavior.PowerPointSupport)
+ {
+ timerCheckPPT.Start();
+ }
+ else
+ {
+ timerCheckPPT.Stop();
+ }
}
private void ToggleSwitchShowCanvasAtNewSlideShow_Toggled(object sender, RoutedEventArgs e)
@@ -1523,10 +1663,53 @@ private void ToggleSwitchShowButtonModeFinger_Toggled(object sender, RoutedEvent
}
}
+ private void ToggleSwitchTransparentButtonBackground_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!isLoaded) return;
+
+ Settings.Appearance.IsTransparentButtonBackground = ToggleSwitchTransparentButtonBackground.IsOn;
+ if (Settings.Appearance.IsTransparentButtonBackground)
+ {
+ BtnExit.Background = new SolidColorBrush(StringToColor("#7F909090"));
+ }
+ else
+ {
+ if (BtnSwitchTheme.Content.ToString() == "深色")
+ {
+ //Light
+ BtnExit.Background = new SolidColorBrush(StringToColor("#FFCCCCCC"));
+ }
+ else
+ {
+ //Dark
+ BtnExit.Background = new SolidColorBrush(StringToColor("#FF555555"));
+ }
+ }
+
+ SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchShowCursor_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!isLoaded) return;
+
+ Settings.Canvas.IsShowCursor = ToggleSwitchShowCursor.IsOn;
+ inkCanvas_EditingModeChanged(inkCanvas, null);
+
+ SaveSettingsToFile();
+ }
+
#endregion
#region Canvas
+ private void ComboBoxPenStyle_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (!isLoaded) return;
+ Settings.Canvas.InkStyle = ComboBoxPenStyle.SelectedIndex;
+ SaveSettingsToFile();
+ }
+
private void InkWidthSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
{
if (!isLoaded) return;
@@ -1541,7 +1724,127 @@ private void InkWidthSlider_ValueChanged(object sender, RoutedPropertyChangedEve
#endregion
- private void SaveSettingsToFile()
+ #region Automation
+
+ private void ToggleSwitchAutoKillPptService_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!isLoaded) return;
+ Settings.Automation.IsAutoKillPptService = ToggleSwitchAutoKillPptService.IsOn;
+ SaveSettingsToFile();
+
+ if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService)
+ {
+ timerKillProcess.Start();
+ }
+ else
+ {
+ timerKillProcess.Stop();
+ }
+ }
+
+ private void ToggleSwitchAutoKillEasiNote_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!isLoaded) return;
+ Settings.Automation.IsAutoKillEasiNote = ToggleSwitchAutoKillEasiNote.IsOn;
+ SaveSettingsToFile();
+
+ if (Settings.Automation.IsAutoKillEasiNote || Settings.Automation.IsAutoKillPptService)
+ {
+ timerKillProcess.Start();
+ }
+ else
+ {
+ timerKillProcess.Stop();
+ }
+ }
+ #endregion
+
+ #region Gesture
+
+ private void ToggleSwitchEnableTwoFingerRotation_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!isLoaded) return;
+
+ Settings.Gesture.IsEnableTwoFingerRotation = ToggleSwitchEnableTwoFingerRotation.IsOn;
+
+ SaveSettingsToFile();
+ }
+
+ private void ToggleSwitchEnableTwoFingerGestureInPresentationMode_Toggled(object sender, RoutedEventArgs e)
+ {
+ if (!isLoaded) return;
+
+ Settings.Gesture.IsEnableTwoFingerGestureInPresentationMode = ToggleSwitchEnableTwoFingerGestureInPresentationMode.IsOn;
+
+ SaveSettingsToFile();
+ }
+
+ #endregion
+
+ #region Reset
+
+ public static void SetSettingsToRecommendation()
+ {
+ bool IsAutoKillPptService = Settings.Automation.IsAutoKillPptService;
+ bool IsAutoKillEasiNote = Settings.Automation.IsAutoKillEasiNote;
+ Settings = new Settings();
+ Settings.Appearance.IsShowEraserButton = false;
+ Settings.Appearance.IsShowExitButton = false;
+ Settings.Startup.IsAutoHideCanvas = true;
+ Settings.Automation.IsAutoKillEasiNote = IsAutoKillEasiNote;
+ Settings.Automation.IsAutoKillPptService = IsAutoKillPptService;
+ Settings.Canvas.InkWidth = 2.5;
+ }
+
+ private void BtnResetToSuggestion_Click(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ isLoaded = false;
+ SetSettingsToRecommendation();
+ SaveSettingsToFile();
+ LoadSettings(false);
+ isLoaded = true;
+
+ if (ToggleSwitchRunAtStartup.IsOn == false)
+ {
+ ToggleSwitchRunAtStartup.IsOn = true;
+ }
+ }
+ catch { }
+ SymbolIconResetSuggestionComplete.Visibility = Visibility.Visible;
+ new Thread(new ThreadStart(() => {
+ Thread.Sleep(5000);
+ Application.Current.Dispatcher.Invoke(() =>
+ {
+ SymbolIconResetSuggestionComplete.Visibility = Visibility.Collapsed;
+ });
+ })).Start();
+ }
+
+ private void BtnResetToDefault_Click(object sender, RoutedEventArgs e)
+ {
+ try
+ {
+ isLoaded = false;
+ File.Delete("settings.json");
+ Settings = new Settings();
+ LoadSettings(false);
+ isLoaded = true;
+ }
+ catch { }
+ SymbolIconResetDefaultComplete.Visibility = Visibility.Visible;
+ new Thread(new ThreadStart(() => {
+ Thread.Sleep(5000);
+ Application.Current.Dispatcher.Invoke(() =>
+ {
+ SymbolIconResetDefaultComplete.Visibility = Visibility.Collapsed;
+ });
+ })).Start();
+ }
+ #endregion
+
+ public static void SaveSettingsToFile()
{
string text = JsonConvert.SerializeObject(Settings, Formatting.Indented);
try
@@ -1601,7 +1904,7 @@ public static string GetWebClient(string url)
///
/// 程序名称
///
- public bool StartAutomaticallyCreate(string exeName)
+ public static bool StartAutomaticallyCreate(string exeName)
{
try
{
@@ -1629,7 +1932,7 @@ public bool StartAutomaticallyCreate(string exeName)
///
/// 程序名称
///
- public bool StartAutomaticallyDel(string exeName)
+ public static bool StartAutomaticallyDel(string exeName)
{
try
{
@@ -1668,42 +1971,6 @@ public static string GetIp(string domainName)
return ipEndPoint.Address.ToString();
}
- private void ToggleSwitchTransparentButtonBackground_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
-
- Settings.Appearance.IsTransparentButtonBackground = ToggleSwitchTransparentButtonBackground.IsOn;
- if (Settings.Appearance.IsTransparentButtonBackground)
- {
- BtnExit.Background = new SolidColorBrush(StringToColor("#7F909090"));
- }
- else
- {
- if (BtnSwitchTheme.Content.ToString() == "深色")
- {
- //Light
- BtnExit.Background = new SolidColorBrush(StringToColor("#FFCCCCCC"));
- }
- else
- {
- //Dark
- BtnExit.Background = new SolidColorBrush(StringToColor("#FF555555"));
- }
- }
-
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchShowCursor_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
-
- Settings.Canvas.IsShowCursor = ToggleSwitchShowCursor.IsOn;
- inkCanvas_EditingModeChanged(inkCanvas, null);
-
- SaveSettingsToFile();
- }
-
private void inkCanvas_EditingModeChanged(object sender, RoutedEventArgs e)
{
if (Settings.Canvas.IsShowCursor)
@@ -1733,6 +2000,7 @@ private void BtnPen_Click(object sender, RoutedEventArgs e)
drawingShapeMode = 0;
inkCanvas.EditingMode = InkCanvasEditingMode.Ink;
inkCanvas.IsManipulationEnabled = true;
+ CancelSingleFingerDragMode();
}
private void BtnDrawLine_Click(object sender, RoutedEventArgs e)
@@ -1741,6 +2009,7 @@ private void BtnDrawLine_Click(object sender, RoutedEventArgs e)
drawingShapeMode = 1;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
+ CancelSingleFingerDragMode();
}
private void BtnDrawArrow_Click(object sender, RoutedEventArgs e)
@@ -1749,6 +2018,7 @@ private void BtnDrawArrow_Click(object sender, RoutedEventArgs e)
drawingShapeMode = 2;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
+ CancelSingleFingerDragMode();
}
private void BtnDrawRectangle_Click(object sender, RoutedEventArgs e)
@@ -1757,6 +2027,7 @@ private void BtnDrawRectangle_Click(object sender, RoutedEventArgs e)
drawingShapeMode = 3;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
+ CancelSingleFingerDragMode();
}
private void BtnDrawEllipse_Click(object sender, RoutedEventArgs e)
@@ -1765,6 +2036,7 @@ private void BtnDrawEllipse_Click(object sender, RoutedEventArgs e)
drawingShapeMode = 4;
inkCanvas.EditingMode = InkCanvasEditingMode.None;
inkCanvas.IsManipulationEnabled = true;
+ CancelSingleFingerDragMode();
}
private void inkCanvas_TouchMove(object sender, TouchEventArgs e)
@@ -2101,74 +2373,6 @@ private void GridInkCanvasSelectionCover_PreviewTouchUp(object sender, TouchEven
#endregion Left Side Panel
- private void ToggleSwitchEnableTwoFingerRotation_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
-
- Settings.Gesture.IsEnableTwoFingerRotation = ToggleSwitchEnableTwoFingerRotation.IsOn;
-
- SaveSettingsToFile();
- }
-
- private void ToggleSwitchEnableTwoFingerGestureInPresentationMode_Toggled(object sender, RoutedEventArgs e)
- {
- if (!isLoaded) return;
-
- Settings.Gesture.IsEnableTwoFingerGestureInPresentationMode = ToggleSwitchEnableTwoFingerGestureInPresentationMode.IsOn;
-
- SaveSettingsToFile();
- }
-
- private void BtnResetToSuggestion_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- isLoaded = false;
- Settings = new Settings();
- Settings.Appearance.IsShowEraserButton = false;
- Settings.Appearance.IsShowExitButton = false;
- Settings.Startup.IsAutoHideCanvas = true;
- SaveSettingsToFile();
- LoadSettings(false);
- isLoaded = true;
-
- if (ToggleSwitchRunAtStartup.IsOn == false)
- {
- ToggleSwitchRunAtStartup.IsOn = true;
- }
- }
- catch { }
- SymbolIconResetSuggestionComplete.Visibility = Visibility.Visible;
- new Thread(new ThreadStart(() => {
- Thread.Sleep(5000);
- Application.Current.Dispatcher.Invoke(() =>
- {
- SymbolIconResetSuggestionComplete.Visibility = Visibility.Collapsed;
- });
- })).Start();
- }
-
- private void BtnResetToDefault_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- isLoaded = false;
- File.Delete("settings.json");
- Settings = new Settings();
- LoadSettings(false);
- isLoaded = true;
- }
- catch { }
- SymbolIconResetDefaultComplete.Visibility = Visibility.Visible;
- new Thread(new ThreadStart(() => {
- Thread.Sleep(5000);
- Application.Current.Dispatcher.Invoke(() =>
- {
- SymbolIconResetDefaultComplete.Visibility = Visibility.Collapsed;
- });
- })).Start();
- }
-
#region Whiteboard Controls
@@ -2333,13 +2537,18 @@ private void UpdateIndexInfoDisplay()
//此函数中的所有代码版权所有 WXRIW,在其他项目中使用前必须提前联系(wxriw@outlook.com),谢谢!
private void inkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEventArgs e)
{
- //Label.Visibility = Visibility.Visible;
- //Label.Content = e.Stroke.StylusPoints.Count.ToString();
- //if (!ToggleSwitchSimulatePressure.IsOn) return;
- int mode = 1;
- switch (mode)
+ // 检查是否是压感笔书写
+ foreach (StylusPoint stylusPoint in e.Stroke.StylusPoints)
{
- case 0:
+ if (stylusPoint.PressureFactor!= 0.5 && stylusPoint.PressureFactor != 0)
+ {
+ return;
+ }
+ }
+
+ switch (Settings.Canvas.InkStyle)
+ {
+ case 1:
try
{
StylusPointCollection stylusPoints = new StylusPointCollection();
@@ -2376,13 +2585,13 @@ private void inkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEv
}
break;
- case 1:
+ case 0:
try
{
StylusPointCollection stylusPoints = new StylusPointCollection();
int n = e.Stroke.StylusPoints.Count - 1;
double pressure = 0.1;
- int x = 8;
+ int x = 10;
if(n >= x)
{
for (int i = 0; i < n - x; i++)
@@ -2423,7 +2632,7 @@ private void inkCanvas_StrokeCollected(object sender, InkCanvasStrokeCollectedEv
}
break;
- case 2:
+ case 3: //根据 mode == 0 改写,目前暂未完成
try
{
StylusPointCollection stylusPoints = new StylusPointCollection();
diff --git a/Ink Canvas/Properties/AssemblyInfo.cs b/Ink Canvas/Properties/AssemblyInfo.cs
index c7b2e5df..e3093030 100644
--- a/Ink Canvas/Properties/AssemblyInfo.cs
+++ b/Ink Canvas/Properties/AssemblyInfo.cs
@@ -51,5 +51,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.2.0.0")]
-[assembly: AssemblyFileVersion("2.2.0.0")]
+[assembly: AssemblyVersion("2.2.1.0")]
+[assembly: AssemblyFileVersion("2.2.1.0")]
diff --git a/Ink Canvas/Settings.cs b/Ink Canvas/Settings.cs
index d9bb62a6..612ed62a 100644
--- a/Ink Canvas/Settings.cs
+++ b/Ink Canvas/Settings.cs
@@ -9,6 +9,10 @@ namespace Ink_Canvas
{
public class Settings
{
+ [JsonProperty("appearance")]
+ public Appearance Appearance { get; set; } = new Appearance();
+ [JsonProperty("automation")]
+ public Automation Automation { get; set; } = new Automation();
[JsonProperty("behavior")]
public Behavior Behavior { get; set; } = new Behavior();
[JsonProperty("canvas")]
@@ -17,8 +21,6 @@ public class Settings
public Gesture Gesture { get; set; } = new Gesture();
[JsonProperty("startup")]
public Startup Startup { get; set; } = new Startup();
- [JsonProperty("appearance")]
- public Appearance Appearance { get; set; } = new Appearance();
}
public class Behavior
@@ -35,6 +37,8 @@ public class Canvas
public double InkWidth { get; set; } = 2.5;
[JsonProperty("isShowCursor")]
public bool IsShowCursor { get; set; } = false;
+ [JsonProperty("inkStyle")]
+ public int InkStyle { get; set; } = 0;
}
public class Gesture
@@ -68,4 +72,12 @@ public class Appearance
[JsonProperty("isShowModeFingerToggleSwitch")]
public bool IsShowModeFingerToggleSwitch { get; set; } = true;
}
+
+ public class Automation
+ {
+ [JsonProperty("isAutoKillPptService")]
+ public bool IsAutoKillPptService { get; set; } = false;
+ [JsonProperty("isAutoKillEasiNote")]
+ public bool IsAutoKillEasiNote { get; set; } = false;
+ }
}
diff --git a/Ink Canvas/WelcomeWindow.xaml b/Ink Canvas/WelcomeWindow.xaml
new file mode 100644
index 00000000..998a1a15
--- /dev/null
+++ b/Ink Canvas/WelcomeWindow.xaml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Ink Canvas/WelcomeWindow.xaml.cs b/Ink Canvas/WelcomeWindow.xaml.cs
new file mode 100644
index 00000000..1948eb87
--- /dev/null
+++ b/Ink Canvas/WelcomeWindow.xaml.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace Ink_Canvas
+{
+ ///
+ /// WelcomeWindow.xaml 的交互逻辑
+ ///
+ public partial class WelcomeWindow : Window
+ {
+ public WelcomeWindow()
+ {
+ InitializeComponent();
+ }
+
+ private void Button_Click(object sender, RoutedEventArgs e)
+ {
+ Close();
+ }
+
+ private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
+ {
+ if (CheckBoxSetAsRecommendation.IsChecked == true)
+ {
+ // 完成向导后先保存版本至 versions.ini,再强行重启,以读取设置
+ MainWindow.SetSettingsToRecommendation();
+ }
+
+ if (CheckBoxRunAtStartup.IsChecked == true)
+ {
+ MainWindow.StartAutomaticallyCreate("InkCanvas");
+ }
+
+ if (CheckBoxAutoKillPptService.IsChecked == true)
+ {
+ MainWindow.Settings.Automation.IsAutoKillPptService = true;
+ }
+
+ if (CheckBoxAutoKillEasiNote.IsChecked == true)
+ {
+ MainWindow.Settings.Automation.IsAutoKillEasiNote = true;
+ }
+
+ MainWindow.SaveSettingsToFile();
+
+ File.WriteAllText("versions.ini", Assembly.GetExecutingAssembly().GetName().Version.ToString());
+ Process.Start(System.Windows.Forms.Application.ExecutablePath);
+ Application.Current.Shutdown();
+ }
+ }
+}