using Common.system; using NAudio.Wave; using NReco.VideoConverter; using System; using System.Drawing; using System.IO; using System.Threading; using System.Windows; using System.Windows.Forms; using System.Windows.Ink; using System.Windows.Interop; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Threading; using XHWK.Model; using XHWK.WKTool.Utils; namespace XHWK.WKTool { /// /// 录屏工具栏 /// public partial class ScreenRecordingToolbarWindow : Window { #region 初始变量 /// /// 视频保存名称 /// private string VideoSavePathName; /// /// 临时视频路径 /// private string TempVideoPathName; /// /// 临时麦克风路径 /// private string TempAudioPathName1; /// /// 临时扬声器路径 /// private string TempAudioPathName2; /// /// 视频信息 /// private Model_Video VideoInfo = null; //声明一个 DrawingAttributes 类型的变量 private DrawingAttributes drawingAttributes; private DispatcherTimer t = null; /// /// 计时器状态 /// private enum State { Start, Pause, End, Loading } /// /// 状态 /// private State _state = State.End; private KeyboardHookCommon k_hook; /// /// 🖊状态 0红色 1蓝色 10红色批注内 11蓝色批注内 /// public int flg = 0; #endregion 初始变量 #region 初始化 /// /// 录屏工具栏 /// public ScreenRecordingToolbarWindow() { InitializeComponent(); ResizeMode = ResizeMode.NoResize; } /// /// 初始化 /// public void Initialize() { GridSrToobar.Visibility = Visibility.Visible; if (APP.W_PracticeWindow == null) { APP.W_PracticeWindow = new PracticeWindow { //APP.W_PracticeWindow.Topmost = true; Width = pwidth, Height = pHeight, Left = 0, Top = 0 }; //practiceWin.Owner = this; } APP.W_PracticeWindow.InitPen(); APP.W_PracticeWindow.InitTQLPPen(); APP.W_PracticeWindow.Show(); new Thread(new ThreadStart(new Action(() => { Thread.Sleep(100); Dispatcher.Invoke(() => { Topmost = true; }); }))).Start(); APP.W_PracticeWindow.Hide(); flg = 0; k_hook = new KeyboardHookCommon(); k_hook.KeyDownEvent += K_hook_KeyDownEvent; //创建 DrawingAttributes 类的一个实例 drawingAttributes = new DrawingAttributes(); //将 InkCanvas 的 DefaultDrawingAttributes 属性的值赋成创建的 DrawingAttributes 类的对象的引用 //InkCanvas 通过 DefaultDrawingAttributes 属性来获取墨迹的各种设置,该属性的类型为 DrawingAttributes 型 blackboard_canvas.DefaultDrawingAttributes = drawingAttributes; drawingAttributes.FitToCurve = true; //隐藏画笔工具栏 BtnRecordingScreen.Visibility = Visibility.Visible; BtnRecordingScreenPause.Visibility = Visibility.Collapsed; BtnStopRecordingScreen.IsEnabled = false; //停止录制按钮不点击 BtnPenBlue.IsEnabled = false;//蓝笔不可点击 BtnPenRed.IsEnabled = false;//红笔不可点击 BtnPenBlue.Visibility = Visibility.Visible; BtnPenRed.Visibility = Visibility.Visible; BtnPenBlue_CL.Visibility = Visibility.Collapsed; BtnPenRed_CL.Visibility = Visibility.Collapsed; TxbTime.Content = "00:00"; } private void K_hook_KeyDownEvent(object sender, System.Windows.Forms.KeyEventArgs e) { if (e.KeyValue == (int)System.Windows.Forms.Keys.F5 && (int)Control.ModifierKeys == (int)Keys.Control) { //开始,暂停 BtnRecordingScreen_Click(null, null); } if (e.KeyValue == (int)Keys.S && (int)Control.ModifierKeys == (int)Keys.Control) { //结束 BtnStopRecordingScreen_Click(null, null); } } #endregion 初始化 #region 事件 private DateTime SRTime = Convert.ToDateTime("2020-01-01 00:00:00"); /// /// 时钟回调 /// /// /// private void OnTimer(object sender, EventArgs e) { if (_state == State.Start) { SRTime = SRTime.AddMilliseconds(1000); } if (SRTime.Hour > 0) { TxbTime.Content = SRTime.ToString("HH:mm:ss"); } else { TxbTime.Content = SRTime.ToString("mm:ss"); } } /// /// 结束 /// /// /// private void End() { _state = State.End; } #region 录屏 /// /// 设置录屏文件地址 /// private void SetUpVideoPathName() { string fileType = ((Enum_VideoType)int.Parse(FileToolsCommon.GetConfigValue("VideoType"))).ToString(); FileToolsCommon.CreateDirectory(APP.WKData.WkPath); FileToolsCommon.DeleteDirectory(APP.WKData.WkPath + "temprs/"); VideoSavePathName = APP.WKData.WkPath + APP.WKData.WkName + "_录屏." + fileType; int num = 1; while (FileToolsCommon.IsExistFile(VideoSavePathName)) { num++; VideoSavePathName = APP.WKData.WkPath + APP.WKData.WkName + "_录屏_" + num + "." + fileType; } TempVideoPathName = APP.WKData.WkPath + APP.WKData.WkName + "_录屏_" + num + ".avi"; TempAudioPathName1 = APP.WKData.WkPath + APP.WKData.WkName + "_录屏_" + num + "_1.mp3" ; TempAudioPathName2 = APP.WKData.WkPath + APP.WKData.WkName + "_录屏_" + num + "_2.mp3"; } /// /// 是否已经按下按钮 /// private bool IsPressButton = false; //录制麦克风的声音 ZAudioRecordHelper helper1 = null; //录制扬声器的声音 ZAudioRecordHelper helper2 = null; //桌面录制 ZVideoRecordHelper helper3 = null; public IntPtr winHandle;// 当前窗体指针 /// /// 开始或暂停录制 /// /// /// private void BtnRecordingScreen_Click(object sender, RoutedEventArgs e) { #region 防止连击 if (IsPressButton) { return; } else { IsPressButton = true; new Thread(new ThreadStart(new Action(() => { Thread.Sleep(500); IsPressButton = false; }))).Start(); } #endregion 防止连击 if (_state == State.End) { SRTime = Convert.ToDateTime("2020-01-01 00:00:00"); TxbTime.Content = "00:00"; if (t == null) { t = new DispatcherTimer(); t.Tick += OnTimer; t.Interval = new TimeSpan(0, 0, 0, 0, 1000); t.IsEnabled = true; t.Start(); } else { t.Interval = new TimeSpan(0, 0, 0, 0, 1000); } _state = State.Loading; #region 检测麦克风扬声器是否可用 //string AudioPath = FileToolsCommon.GetFileAbsolutePath("/temp/audio/"); //FileToolsCommon.CreateDirectory(AudioPath); //string audioSpeakerPath = AudioPath + "adoS" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".m"; //string audioMicrophonePath = AudioPath + "adoM" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".m"; //try //{ // FileToolsCommon.DeleteFile(audioSpeakerPath); // FileToolsCommon.DeleteFile(audioMicrophonePath); //} //catch (Exception) //{ //} //扬声器 //if (APP.FFmpeg.StartRecordSpeakerAudio(audioSpeakerPath)) //{ // APP.FFmpeg.StopRecordAudio(2); // //麦克风 // if (APP.FFmpeg.StartRecordAudio(audioMicrophonePath)) // { // } // else // { // //无法录制麦克风 // MessageBoxResult Res = MessageWindow.Show("当前电脑无法录制麦克风,是否继续?", "消息提示", MessageBoxButton.OKCancel); // if (Res == MessageBoxResult.Cancel) // { // return; // } // } // APP.FFmpeg.StopRecordAudio(1); //} //else //{ // //无法录制扬声器音频 // MessageBoxResult Res = MessageWindow.Show("当前电脑无法录制音频,是否继续?", "消息提示", MessageBoxButton.OKCancel); // if (Res == MessageBoxResult.Cancel) // { // return; // } //} #endregion 检测麦克风扬声器是否可用 VideoInfo = new Model_Video { VideoType = (Enum_VideoType)int.Parse(FileToolsCommon.GetConfigValue("VideoType")), WkType = Enum_WKVidetype.RecordingScreen }; SetUpVideoPathName(); k_hook.Start();//安装键盘钩子 //if (APP.W_CountdownWindow == null) //{ // APP.W_CountdownWindow = new CountdownWindow(); // APP.W_CountdownWindow.Initialize(true, 1800); //} //else //{ // APP.W_CountdownWindow.Initialize(true, 1800); //} //APP.W_CountdownWindow.Show(); BtnRecordingScreen.Visibility = Visibility.Collapsed; BtnRecordingScreenPause.Visibility = Visibility.Visible; BtnStopRecordingScreen.IsEnabled = true; //停止录制按钮可点击 BtnPenBlue.IsEnabled = true;//蓝笔可点击 BtnPenRed.IsEnabled = true;//红笔可点击 BtnPenBlue.Visibility = Visibility.Visible; BtnPenRed.Visibility = Visibility.Visible; BtnPenBlue_CL.Visibility = Visibility.Collapsed; BtnPenRed_CL.Visibility = Visibility.Collapsed; TxbTime.Visibility = Visibility.Visible;//时间显示 #region 隐藏工具栏 if (APP.IsHideSRTool) { if (APP.W_MinToolbar == null) { APP.W_MinToolbar = new MinToolbar(); } APP.W_MinToolbar.Topmost = true; double MinToolTop = Top; GridSrToobar.Visibility = Visibility.Hidden; APP.W_MinToolbar.Initialize(MinToolTop, ActualHeight); APP.W_MinToolbar.Show(); } #endregion 隐藏工具栏 helper1 = new ZAudioRecordHelper(TempAudioPathName1, ZAudioRecordHelper.RecordType.microphone); helper2 = new ZAudioRecordHelper(TempAudioPathName2, ZAudioRecordHelper.RecordType.loudspeaker); helper1.StartRecordAudio(); helper2.StartRecordAudio(); winHandle = new WindowInteropHelper(this).Handle; var curScreen = Screen.FromHandle(winHandle); int RecordWidth = curScreen.Bounds.Width; int RecordHeight = curScreen.Bounds.Height; helper3 = new ZVideoRecordHelper(TempVideoPathName, RecordWidth, RecordHeight); helper3.StartRecordVideo(); _state = State.Start; Console.WriteLine("TempAudioPathName1:"+ TempAudioPathName1); Console.WriteLine("TempAudioPathName2:" + TempAudioPathName2); Console.WriteLine("TempVideoPathName:" + TempVideoPathName); } else if (_state == State.Start) { _state = State.Pause; helper1.PauseRecordAudio(); helper2.PauseRecordAudio(); helper3.PauseRecordVideo(); } else if (_state == State.Pause) { _state = State.Start; helper1.ResumeRecordAudio(); helper2.ResumeRecordAudio(); helper3.ResumeRecordVideo(); } } /// /// 停止录像 /// /// /// private void BtnStopRecordingScreen_Click(object sender, RoutedEventArgs e) { #region 防止连击 if (IsPressButton) { return; } else { IsPressButton = true; new Thread(new ThreadStart(new Action(() => { Thread.Sleep(500); IsPressButton = false; }))).Start(); } #endregion 防止连击 BtnRecordingScreen.ToolTip = "开始"; k_hook.Stop(); TxbTime.Content = "00:00"; if (APP.W_PracticeWindow != null) { if (APP.W_PracticeWindow.Visibility == Visibility.Visible) { Owner = null; APP.W_PracticeWindow.ReturnPractice(); } } if (APP.W_XHMicroLessonSystemWindow == null) { APP.W_XHMicroLessonSystemWindow = new XHMicroLessonSystemWindow(); } APP.W_XHMicroLessonSystemWindow.InitializeKeyDownEvent(); APP.W_XHMicroLessonSystemWindow.InitPen(); APP.W_XHMicroLessonSystemWindow.InitTQLPPen(); APP.W_XHMicroLessonSystemWindow.Show(); if (_state == State.Pause || _state == State.Start) { t.Stop(); t = null; Console.WriteLine("停止录制"); helper1.StopRecordAudio(); helper2.StopRecordAudio(); helper3.StopRecordVideo(); FFMpegConverter ffMpeg = new FFMpegConverter(); FFMpegInput[] input = new FFMpegInput[] { new FFMpegInput(TempVideoPathName), new FFMpegInput(TempAudioPathName1), new FFMpegInput(TempAudioPathName1), }; // 多路音频混音 ffMpeg.ConvertMedia( input, VideoSavePathName, "mp4", new OutputSettings() { CustomOutputArgs = "-filter_complex amix=inputs=2:duration=first:dropout_transition=2" } ); //生成缩略图 string ThumbnailPath = FileToolsCommon.GetDirectoryName(VideoSavePathName) + "ThumbnailPath/"; FileToolsCommon.CreateDirectory(ThumbnailPath); //缩略图存储位置 string ThumbnailPathName = ThumbnailPath + FileToolsCommon.GetIOFileName(VideoSavePathName).Replace(".", "") + ".JPG"; new Thread(new ThreadStart(new Action(() => { FileToolsCommon.DeleteFile(ThumbnailPathName); VideoInfo.RSTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); VideoInfo.VideoPath = VideoSavePathName; VideoInfo.ThumbnailPath = ThumbnailPathName; APP.FFmpeg.GenerateThumbnails(VideoSavePathName, ThumbnailPathName, 200, 130); VideoInfo.FileGuid = Guid.NewGuid().ToString(); VideoInfo.IsUpload = false; VideoInfo.Uploaded = 0; if (!APP.VideoList.Exists(x => x.FileGuid == VideoInfo.FileGuid) || !APP.VideoList.Exists(x => x.VideoPath == VideoInfo.VideoPath)) { APP.VideoList.Add(VideoInfo); //保存数据 APP.SaveWkData(); } FileToolsCommon.DeleteFile(TempAudioPathName1); FileToolsCommon.DeleteFile(TempAudioPathName2); FileToolsCommon.DeleteFile(TempVideoPathName); }))).Start(); Click_stopRecordingScreen(); } Hide(); End(); } public void MaxToobar() { Graphics graphics = Graphics.FromHwnd(IntPtr.Zero); float DIP = graphics.DpiX; //float DIPY = graphics.DpiY; APP.W_ScreenRecordingToolbarWindow.Left = PrimaryScreen.WorkingArea.Width / (DIP / 96) - APP.W_ScreenRecordingToolbarWindow.Width; GridSrToobar.Visibility = Visibility.Visible; APP.W_ScreenRecordingToolbarWindow.Topmost = true; } #endregion 录屏 #region 画笔相关 /// /// 画笔工具栏关闭事件 /// /// /// private void BtnToolbarDown_Click(object sender, RoutedEventArgs e) { gridToolbar.Visibility = Visibility.Hidden; gridColour.Visibility = Visibility.Hidden; gridThickness.Visibility = Visibility.Hidden; APP.W_PracticeWindow.Hide(); } /// /// 笔调用批注 /// public void PenPractice() { if (flg != 11 && flg != 10) { #region 防止连击 if (IsPressButton) { return; } else { IsPressButton = true; new Thread(new ThreadStart(new Action(() => { Thread.Sleep(500); IsPressButton = false; }))).Start(); } #endregion 防止连击 string time = GetTimeStamp(); string tempPath = AppDomain.CurrentDomain.BaseDirectory + "temp\\"; if (!Directory.Exists(tempPath)) { Directory.CreateDirectory(tempPath); } try { Dispatcher.Invoke(() => { //borOne.Background = new SolidColorBrush(Colors.LightSkyBlue); //borTwo.Background = new SolidColorBrush(Colors.DodgerBlue); if (APP.W_PracticeWindow == null) { APP.W_PracticeWindow = new PracticeWindow { Width = pwidth, Height = pHeight, Left = 0, Top = 0 }; //practiceWin.Owner = this; } //APP.W_PracticeWindow.InitPen(); //APP.W_PracticeWindow.InitTQLPPen(); APP.W_PracticeWindow.Initialize();// imagePath); flg = 11; APP.W_PracticeWindow.Blue(); APP.W_PracticeWindow.Show(); APP.W_PracticeWindow.Topmost = true; APP.W_PracticeWindow.Focus(); }); new Thread(new ThreadStart(new Action(() => { Dispatcher.Invoke(() => { APP.W_PracticeWindow.Topmost = false; }); Thread.Sleep(500); Dispatcher.Invoke(() => { //Owner = APP.W_PracticeWindow; Topmost = true; }); }))).Start(); } catch (Exception ex) { LogHelper.WriteErrLog("【批注(PracticeWindow)" + ex.Message, ex); } } } /// /// 画笔点击事件 /// /// /// private void BtnBrush_Click(object sender, RoutedEventArgs e) { if (BtnPenBlue.Visibility != Visibility.Visible) { return; } #region 防止连击 if (IsPressButton) { return; } else { IsPressButton = true; new Thread(new ThreadStart(new Action(() => { Thread.Sleep(500); IsPressButton = false; }))).Start(); } #endregion 防止连击 BtnPenBlue.Visibility = Visibility.Collapsed; BtnPenRed.Visibility = Visibility.Visible; BtnPenBlue_CL.Visibility = Visibility.Visible; BtnPenRed_CL.Visibility = Visibility.Collapsed; string time = GetTimeStamp(); string tempPath = AppDomain.CurrentDomain.BaseDirectory + "temp\\"; if (!Directory.Exists(tempPath)) { Directory.CreateDirectory(tempPath); } #region 录屏批注取消画笔 //string imagePath = Path.Combine(tempPath, time + ".jpg"); //ImageHelper.GetScreenshot(new System.Drawing.Rectangle(0, 0, 0, 0), imagePath, true, out BitmapImage bitmap); #endregion 录屏批注取消画笔 try { if (flg == 11) { //Dispatcher.Invoke(() => //{ // borOne.Background = new SolidColorBrush(Colors.DodgerBlue); // borTwo.Background = new SolidColorBrush(Colors.DodgerBlue); //}); flg = 1; //this.Owner = null; APP.W_PracticeWindow.ReturnPractice(); } else if (flg == 10) { //Dispatcher.Invoke(() => //{ // borOne.Background = new SolidColorBrush(Colors.LightSkyBlue); // borTwo.Background = new SolidColorBrush(Colors.DodgerBlue); //}); APP.W_PracticeWindow.Blue(); flg = 11; } else { //new Thread(new ThreadStart(new Action(() => //{ //Dispatcher.Invoke(() => //{ // borOne.Background = new SolidColorBrush(Colors.LightSkyBlue); // borTwo.Background = new SolidColorBrush(Colors.DodgerBlue); //}); //}))).Start(); if (APP.W_PracticeWindow == null) { APP.W_PracticeWindow = new PracticeWindow { //APP.W_PracticeWindow.Topmost = true; Width = pwidth, Height = pHeight, Left = 0, Top = 0 }; //practiceWin.Owner = this; } APP.W_PracticeWindow.InitPen(); APP.W_PracticeWindow.InitTQLPPen(); APP.W_PracticeWindow.Initialize();// imagePath); flg = 11; APP.W_PracticeWindow.Blue(); APP.W_PracticeWindow.Show(); new Thread(new ThreadStart(new Action(() => { Thread.Sleep(100); Dispatcher.Invoke(() => { //Owner = APP.W_PracticeWindow; Topmost = true; }); }))).Start(); } } catch (Exception ex) { LogHelper.WriteErrLog("【批注(PracticeWindow)" + ex.Message, ex); } //imgCanvas.Source = new BitmapImage(new Uri(imagePath)); } /// /// 屏幕宽 /// internal double pwidth = SystemParameters.PrimaryScreenWidth; /// /// 屏幕高 /// internal double pHeight = SystemParameters.PrimaryScreenHeight; /// /// 获取时间戳 /// /// public string GetTimeStamp() { TimeSpan ts = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0); return Convert.ToInt64(ts.TotalMilliseconds).ToString(); } /// /// 画笔粗细事件 /// /// /// private void BtnThickness_Click(object sender, RoutedEventArgs e) { gridThickness.Visibility = Visibility.Visible; gridColour.Visibility = Visibility.Collapsed; } /// /// 画笔颜色事件 /// /// /// private void BtnColour_Click(object sender, RoutedEventArgs e) { gridColour.Visibility = Visibility.Visible; gridThickness.Visibility = Visibility.Collapsed; } /// /// 白色 /// /// /// private void BtnWhite_Click(object sender, RoutedEventArgs e) { //drawingAttributes.Color = Colors.White; APP.W_PracticeWindow.White(); gridColour.Visibility = Visibility.Collapsed; gridThickness.Visibility = Visibility.Collapsed; } /// /// 红色 /// /// /// private void BtnRed_Click(object sender, RoutedEventArgs e) { //drawingAttributes.Color = Colors.Red; APP.W_PracticeWindow.Red(); gridColour.Visibility = Visibility.Collapsed; gridThickness.Visibility = Visibility.Collapsed; } /// /// 黄色 /// /// /// private void BtnYellow_Click(object sender, RoutedEventArgs e) { //drawingAttributes.Color = Colors.Gold; APP.W_PracticeWindow.Yellow(); gridColour.Visibility = Visibility.Collapsed; gridThickness.Visibility = Visibility.Collapsed; } /// /// 青色 /// /// /// private void BtnCyanBlue_Click(object sender, RoutedEventArgs e) { //drawingAttributes.Color = Colors.LimeGreen; APP.W_PracticeWindow.CyanBlue(); gridColour.Visibility = Visibility.Collapsed; gridThickness.Visibility = Visibility.Collapsed; } /// /// 灰色 /// /// /// private void BtnGray_Click(object sender, RoutedEventArgs e) { //drawingAttributes.Color = Colors.Gray; APP.W_PracticeWindow.Gray(); gridColour.Visibility = Visibility.Collapsed; gridThickness.Visibility = Visibility.Collapsed; } /// /// 蓝色 /// /// /// private void BtnBlue_Click(object sender, RoutedEventArgs e) { //drawingAttributes.Color = Colors.DeepSkyBlue; APP.W_PracticeWindow.Blue(); gridColour.Visibility = Visibility.Collapsed; gridThickness.Visibility = Visibility.Collapsed; } /// /// 画笔 细 /// /// /// private void BtnFine_Click(object sender, RoutedEventArgs e) { APP.W_PracticeWindow.Fine(); gridColour.Visibility = Visibility.Collapsed; gridThickness.Visibility = Visibility.Collapsed; } /// /// 画笔 中 /// /// /// private void BtnIn_Click(object sender, RoutedEventArgs e) { APP.W_PracticeWindow.In(); gridColour.Visibility = Visibility.Collapsed; gridThickness.Visibility = Visibility.Collapsed; } /// /// 画笔粗 /// /// /// private void BtnCrude_Click(object sender, RoutedEventArgs e) { APP.W_PracticeWindow.Crude(); gridColour.Visibility = Visibility.Collapsed; gridThickness.Visibility = Visibility.Collapsed; } /// /// 橡皮 /// /// /// private void BtnEraser_Click(object sender, RoutedEventArgs e) { APP.W_PracticeWindow.Eraser(); } /// /// 🖊 /// /// /// private void BtnPen_Click(object sender, RoutedEventArgs e) { APP.W_PracticeWindow.Pen(); } /// /// ⚪ /// /// /// private void BtnRound_Click(object sender, RoutedEventArgs e) { APP.W_PracticeWindow.Round(); } /// /// 矩形 /// /// /// private void BtnRectangle_Click(object sender, RoutedEventArgs e) { APP.W_PracticeWindow.Rectangle(); } #endregion 画笔相关 #endregion 事件 /// /// 停止录屏 /// public delegate void StopRecordingScreen(); /// /// 停止录屏 /// public event StopRecordingScreen Click_stopRecordingScreen; /// /// 移动工具栏 /// /// /// private void Grid_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) { DragMove(); } /// /// 红笔 /// /// /// private void BtnBlackPenTwo_Click(object sender, RoutedEventArgs e) { if (BtnPenRed.Visibility != Visibility.Visible) { return; } #region 防止连击 if (IsPressButton) { return; } else { IsPressButton = true; new Thread(new ThreadStart(new Action(() => { Thread.Sleep(500); IsPressButton = false; }))).Start(); } #endregion 防止连击 BtnPenBlue.Visibility = Visibility.Visible; BtnPenRed.Visibility = Visibility.Collapsed; BtnPenBlue_CL.Visibility = Visibility.Collapsed; BtnPenRed_CL.Visibility = Visibility.Visible; string time = GetTimeStamp(); string tempPath = AppDomain.CurrentDomain.BaseDirectory + "temp\\"; if (!Directory.Exists(tempPath)) { Directory.CreateDirectory(tempPath); } #region 录屏批注取消画笔 string imagePath = Path.Combine(tempPath, time + ".jpg"); ImageHelper.GetScreenshot(new System.Drawing.Rectangle(0, 0, 0, 0), imagePath, true, out BitmapImage bitmap); #endregion 录屏批注取消画笔 try { if (flg == 10) { flg = 0; APP.W_PracticeWindow.ReturnPractice(); } else if (flg == 11) { flg = 10; APP.W_PracticeWindow.Red(); } else { if (APP.W_PracticeWindow == null) { APP.W_PracticeWindow = new PracticeWindow { Width = pwidth, Height = pHeight, Left = 0, Top = 0 }; } APP.W_PracticeWindow.InitPen(); APP.W_PracticeWindow.InitTQLPPen(); APP.W_PracticeWindow.Initialize();//imagePath); flg = 10; APP.W_PracticeWindow.Red(); APP.W_PracticeWindow.Show(); new Thread(new ThreadStart(new Action(() => { Thread.Sleep(100); Dispatcher.Invoke(() => { //Owner = APP.W_PracticeWindow; Topmost = true; }); }))).Start(); } } catch (Exception ex) { LogHelper.WriteErrLog("【批注(PracticeWindow)" + ex.Message, ex); } } /// /// 返回主界面 /// /// /// private void BtnReturn_Click(object sender, RoutedEventArgs e) { if (_state==State.Pause || _state == State.Start) { MessageBoxResult br = MessageWindow.Show("退出将取消保存当前录屏,是否继续?", "提示", MessageBoxButton.OKCancel); if (br == MessageBoxResult.Cancel) { return; } k_hook.Stop(); BtnRecordingScreen.ToolTip = "开始"; TxbTime.Content = "00:00"; End(); APP.W_PracticeWindow.ReturnPractice(); if (APP.W_PracticeWindow != null) { if (APP.W_PracticeWindow.Visibility == Visibility.Visible) { APP.W_PracticeWindow.Hide(); } } if (gridToolbar.Visibility == Visibility.Visible) { gridToolbar.Visibility = Visibility.Hidden; gridColour.Visibility = Visibility.Hidden; gridThickness.Visibility = Visibility.Hidden; } if (APP.W_XHMicroLessonSystemWindow == null) { APP.W_XHMicroLessonSystemWindow = new XHMicroLessonSystemWindow(); } try { try { APP.FFmpeg.SuspendFFmpeg(); } catch (Exception ex) { LogHelper.WriteErrLog("【录屏返回】(BtnStopRecordingScreen_Click)" + ex.Message, ex); } new Thread(new ThreadStart(new Action(() => { VideoInfo = null; FileToolsCommon.DeleteDirectory(APP.WKData.WkPath + "temprs/"); }))).Start(); } catch (Exception ex) { LogHelper.WriteErrLog("【录屏返回】(BtnStopRecordingScreen_Click)" + ex.Message, ex); } } APP.W_XHMicroLessonSystemWindow.InitializeKeyDownEvent(); APP.W_XHMicroLessonSystemWindow.InitPen(); APP.W_XHMicroLessonSystemWindow.InitTQLPPen(); APP.W_XHMicroLessonSystemWindow.Show(); new Thread(new ThreadStart(new Action(() => { Thread.Sleep(700); Dispatcher.Invoke(() => { if (APP.W_MinToolbar != null) { APP.W_MinToolbar.Hide(); } }); }))).Start(); Hide(); } /// /// 修改笔状态 /// public void ModifyState() { BtnPenBlue.Visibility = Visibility.Visible; BtnPenRed.Visibility = Visibility.Visible; BtnPenBlue_CL.Visibility = Visibility.Collapsed; BtnPenRed_CL.Visibility = Visibility.Collapsed; } private void gridToobarTwo_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) { //if (BtnRecordingScreen.ToolTip.ToString().Equals("暂停") && (gridToobar.Visibility == Visibility.Visible || BorderBlack.Visibility == Visibility.Visible)) if (BtnRecordingScreenPause.Visibility == Visibility.Visible) { if (APP.IsHideSRTool) { if (APP.W_MinToolbar == null) { APP.W_MinToolbar = new MinToolbar(); } APP.W_MinToolbar.Topmost = true; double MinToolTop = Top; new Thread(new ThreadStart(new Action(() => { Thread.Sleep(500); Dispatcher.Invoke(() => { MouseEventCommon.GetCursorPos(out MouseEventCommon.POINT pointRecord); if (pointRecord.X >= this.Left && pointRecord.X < this.Left + this.ActualWidth && pointRecord.Y >= this.Top && pointRecord.Y < this.Top + this.ActualHeight) { //LblMessage.Content = "在区域内:("+ pointRecord.X+","+pointRecord.Y+") ("+ Left + ","+Top+")"; } else { //LblMessage.Content = "不在区域内:(" + pointRecord.X + "," + pointRecord.Y + ") (" + Left + "," + Top + ")"; APP.W_MinToolbar.Initialize(MinToolTop, ActualHeight); GridSrToobar.Visibility = Visibility.Hidden; APP.W_MinToolbar.Show(); } }); }))).Start(); } } } } }