MainForm.xaml.cs 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. using System;
  2. using System.IO;
  3. using System.Windows;
  4. using SHJX.Service.View.View;
  5. using SHJX.Service.Common.ReadXML;
  6. using SHJX.Service.Common.Extend;
  7. using System.Runtime.InteropServices;
  8. using SHJX.Service.Common.UserDelegate;
  9. using SHJX.Service.Common.ExtendElement;
  10. using SHJX.Service.ModelView;
  11. using SHJX.Service.Common.Logging;
  12. using Microsoft.Extensions.Logging;
  13. namespace SHJX.Service.View
  14. {
  15. /// <summary>
  16. /// MainForm.xaml 的交互逻辑
  17. /// </summary>
  18. public partial class MainForm : Window
  19. {
  20. private static readonly ILogger logger = LogFactory.BuildLogger(typeof(MainForm));
  21. private readonly ReadConfigUtil _config;
  22. private readonly MainViewModel _viewModel;
  23. public readonly MainViewModel Maincontroller;
  24. private SettingForm _settingForm;
  25. private AboutForm _about;
  26. private ManualForm _manual;
  27. private TemplateWindow _template;
  28. private ModifyResult _modifyResult;
  29. /// <summary>
  30. /// 配置文件读取
  31. /// </summary>
  32. public MainForm()
  33. {
  34. WindowsSleep(true);
  35. InitializeComponent();
  36. ResizeMode = ResizeMode.CanMinimize;
  37. }
  38. private int cameraNum = 0;
  39. public MainForm(ReadConfigUtil config)
  40. {
  41. try
  42. {
  43. WindowsSleep(true);
  44. _viewModel = new MainViewModel(config, out int camera);
  45. cameraNum = camera;
  46. DataContext = _viewModel;
  47. Maincontroller= _viewModel;
  48. Messager.Register("ScreenShot", ScreenShot);
  49. Messager.Register("ShowWindow", ShowWindow);
  50. Messager.Register("SystemMinSize", SystemMinSize);
  51. InitializeComponent();
  52. _config = config;
  53. ResizeMode = ResizeMode.CanMinimize;
  54. }
  55. catch (Exception ex)
  56. {
  57. logger.LogError(ex.Message);
  58. }
  59. }
  60. private void WaterMachineOpenClick(object sender, EventArgs e)
  61. {
  62. try
  63. {
  64. UMessageBox.Info("请确认:\r\r 1: 【冷凝水机】\r 2:【空气压缩机】\r\r两者均已开启!!!\r否则对设备造成严重损害!").Equals(MessageBoxResult.Yes);
  65. this.beiginTask.IsEnabled = true;
  66. }
  67. catch (Exception ex)
  68. {
  69. logger.LogError(ex.Message);
  70. }
  71. }
  72. private void WaterMachineCloseClick(object sender, EventArgs e)
  73. {
  74. try
  75. {
  76. this.beiginTask.IsEnabled = false;
  77. }
  78. catch (Exception ex)
  79. {
  80. logger.LogError(ex.Message);
  81. }
  82. }
  83. #region 窗体休眠
  84. //定义API函数
  85. [DllImport("kernel32.dll")]
  86. private static extern uint SetThreadExecutionState(uint esFlags);
  87. private const uint ES_SYSTEM_REQUIRED = 0x00000001;
  88. private const uint ES_DISPLAY_REQUIRED = 0x00000002;
  89. private const uint ES_CONTINUOUS = 0x80000000;
  90. public static void WindowsSleep(bool sleepOrNot)
  91. {
  92. if (sleepOrNot)
  93. {
  94. SetThreadExecutionState(ES_CONTINUOUS | ES_DISPLAY_REQUIRED | ES_SYSTEM_REQUIRED);//阻止休眠时调用
  95. }
  96. else
  97. {
  98. //恢复休眠时调用
  99. SetThreadExecutionState(ES_CONTINUOUS);
  100. }
  101. }
  102. #endregion
  103. #region 窗体最大化
  104. private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
  105. {
  106. if (this.ActualHeight > SystemParameters.WorkArea.Height ||
  107. this.ActualWidth > SystemParameters.WorkArea.Width)
  108. {
  109. WindowState = WindowState.Normal;
  110. btnMaximize_Click(null, null);
  111. }
  112. }
  113. /// <summary>
  114. /// 最大化
  115. /// </summary>
  116. private void btnMaximize_Click(object sender, RoutedEventArgs e)
  117. {
  118. this.Left = 0; //设置位置
  119. this.Top = 0;
  120. Rect rc = SystemParameters.WorkArea; //获取工作区大小
  121. this.Width = rc.Width;
  122. this.Height = rc.Height;
  123. }
  124. #endregion
  125. private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
  126. {
  127. WindowsSleep(false);
  128. }
  129. private void ScreenCapture_Click(object sender, RoutedEventArgs e)
  130. {
  131. Dispatcher.Invoke(new Action(() => ScreenShot(null)));
  132. }
  133. public void ScreenShot(object obj)
  134. {
  135. var bit = this.ScreenConvertToBitmap();
  136. DirectoryInfo d = new DirectoryInfo(Path.Combine(Directory.GetCurrentDirectory(), $"cache\\{DateTime.Now:yyyy-MM-dd}"));
  137. if (!d.Exists) d.Create();
  138. var photoName = $"软件截图{DateTime.Now:yyyyMMddHHmmssfff}.png";
  139. bit.Save(Path.Combine(d.FullName, photoName));
  140. UMessageBox.SuccessTip("截图保存成功!");
  141. }
  142. private void SystemMinSize(object obj)
  143. {
  144. WindowState = WindowState.Minimized;
  145. }
  146. public void ShowWindow(object name)
  147. {
  148. switch (name.ToString())
  149. {
  150. case "manual":
  151. _manual = new ManualForm(_config);
  152. _manual.ShowDialog();
  153. break;
  154. case "setting":
  155. _settingForm = new SettingForm(Maincontroller, _config);
  156. _settingForm.ShowDialog();
  157. break;
  158. case "about":
  159. _about = new AboutForm(_config);
  160. _about.ShowDialog();
  161. break;
  162. case "template":
  163. _template = new TemplateWindow(_config);
  164. _template.ShowDialog();
  165. break;
  166. }
  167. }
  168. private void cameraNumCombobox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
  169. {
  170. //if (!cameraNumCombobox.IsLoaded)
  171. // return;
  172. //if (e.RemovedItems.Count >0)
  173. //{
  174. // if (cameraNum.ToString() == cameraNumCombobox.Text.ToString())
  175. // {
  176. // }
  177. // else
  178. // {
  179. // cameraNumCombobox.Text = cameraNum.ToString();
  180. // UMessageBox.Error("只检测到" + cameraNum + "个相机,请检查相机的连接和相机参数配置是否有问题");
  181. // }
  182. //}
  183. }
  184. private void cameraNumCombobox_DropDownClosed(object sender, EventArgs e)
  185. {
  186. if (cameraNum.ToString() == cameraNumCombobox.Text.ToString()||cameraNumCombobox.Text == "0")
  187. {
  188. }
  189. else
  190. {
  191. cameraNumCombobox.Text = cameraNum.ToString();
  192. UMessageBox.Error("只检测到" + cameraNum + "个相机," +
  193. "请检查相机的连接和相机参数配置是否有问题");
  194. }
  195. }
  196. private void Label_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
  197. {
  198. _modifyResult = new ModifyResult();
  199. _modifyResult.ShowDialog();
  200. }
  201. }
  202. }