using SlnMesnac.WPF.ViewModel; using System.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; using System.Windows.Shapes; namespace SlnMesnac.WPF.Page { /// /// IndexControl.xaml 的交互逻辑 /// public partial class IndexControl : UserControl { private IndexControlViewModel indexControlViewModel; public IndexControl() { InitializeComponent(); indexControlViewModel = new IndexControlViewModel(); this.DataContext = indexControlViewModel; indexControlViewModel.RefreshHighlightStationEvent += HighlightStation; } #region 云台控制 private void btnUp_MouseDown(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("up", true); } private void btnUp_MouseUp(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("up", false); } private void btnDown_MouseDown(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("down", true); } private void btnDown_MouseUp(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("down", false); } private void btnLeft_MouseDown(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("left", true); } private void btnLeft_MouseUp(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("left", false); } private void btnRight_MouseDown(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("right", true); } private void btnRight_MouseUp(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("right", false); } /// /// 变倍 + /// /// /// private void btnZoomIn_MouseDown(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("zoomIn", true); } private void btnZoomIn_MouseUp(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("zoomIn", false); } /// /// 变倍 + /// /// /// private void btnZoomOut_MouseDown(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("zoomOut", true); } private void btnZoomOut_MouseUp(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("zoomOut", false); } /// /// 变焦 /// /// /// private void btnFocusFar_MouseDown(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("focusFar", true); } private void btnFocusFar_MouseUp(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("focusFar", false); } /// /// 变焦 /// /// /// private void btnFocusNear_MouseDown(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("focusNear", true); } private void btnFocusNear_MouseUp(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalOperate("focusNear", false); } #endregion /// /// 云台自动运行 /// /// /// private void btn_auto_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { indexControlViewModel.GimbalAutoRun(); } private bool is_insp_model = false; /// /// 巡检模式切换 /// /// /// private void btn_inspmode_MouseDown(object sender, MouseButtonEventArgs e) { if (!is_insp_model) { if (is_auto_model) { MessageBox.Show("当前处于自动模式中,请先关闭自动模式,再开启巡检模式"); return; } btn_automatic.Background = new SolidColorBrush(Colors.LightBlue); is_insp_model = true; indexControlViewModel.Start_InspMode(); } else { btn_automatic.Background = new SolidColorBrush(Colors.Transparent); is_insp_model = false; indexControlViewModel.Stop_InspMode(); } } private bool is_auto_model = false; /// /// 自动模式切换 /// /// /// private void btn_automode_MouseDown(object sender, MouseButtonEventArgs e) { if (!is_auto_model) { if (is_insp_model) { MessageBox.Show("当前处于巡检模式中,请先关闭巡检模式,再开启自动模式"); } btn_autotask.Background = new SolidColorBrush(Colors.LightBlue); is_auto_model = true; indexControlViewModel.Start_AutoMode(); } else { btn_autotask.Background = new SolidColorBrush(Colors.Transparent); is_auto_model = false; indexControlViewModel.Stop_AutoMode(); } } /// /// 开启预览 /// /// /// private void btn_start_preview_Click(object sender, RoutedEventArgs e) { indexControlViewModel.Login(RealPlayWnd, RealPlayWnd2); } /// /// 停止预览 /// /// /// private void btn_stop_preview_Click(object sender, RoutedEventArgs e) { indexControlViewModel.ClosePreview(RealPlayWnd, RealPlayWnd2); Thread.Sleep(1000); indexControlViewModel.Logout(); } private void HighlightStation(int stationNumber) { App.Current.Dispatcher.Invoke(() => { ResetStationColors(); // 根据输入的站点编号高亮对应的站点 if(canvasTrack!= null) { Rectangle station = (Rectangle)canvasTrack.FindName($"station{stationNumber}"); if (station != null) { station.Fill = Brushes.GreenYellow; } } }); } private void ResetStationColors() { // 重置所有站点的颜色 for (int i = 1; i <= 18; i++) { Rectangle station = (Rectangle)canvasTrack.FindName($"station{i}"); if (station != null) { station.Fill = Brushes.Gray; } } } } }