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();
}
}
}
}
}