using Common.system;
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.Media;
using System.Windows.Media.Imaging;
using System.Windows.Threading;
using XHWK.Model;
namespace XHWK.WKTool
{
///
/// 录屏工具栏
///
public partial class ScreenRecordingToolbarWindow : Window
{
#region 初始变量
///
/// 视频保存名称
///
private string VideoSavePathName;
///
/// 是否首次录屏
///
private bool IsFirstRS = true;
///
/// 是否停止/暂停中
///
private bool IsSuspend = true;
///
/// 视频信息
///
private Model_Video VideoInfo = null;
//声明一个 DrawingAttributes 类型的变量
private DrawingAttributes drawingAttributes;
private DispatcherTimer t = null;
///
/// 计时器状态
///
private enum State
{
Start,
Pause,
End
}
///
/// 状态
///
private State _state = State.End;
private KeyboardHookCommon k_hook;
///
/// 🖊状态 0红色 1蓝色 10红色批注内 11蓝色批注内
///
public int flg = 0;
private System.Timers.Timer timer = new System.Timers.Timer();
#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(() =>
{
//Owner = APP.W_PracticeWindow;
Topmost = true;
});
}))).Start();
APP.W_PracticeWindow.Hide();
//borOne.Background = new SolidColorBrush(Colors.DodgerBlue);
//borTwo.Background = new SolidColorBrush(Colors.DodgerBlue);
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;
//隐藏画笔工具栏
//BtnToolbarDown_Click(null, null);
//GridSrToobar.Visibility = Visibility.Hidden;
//gridColour.Visibility = Visibility.Hidden;
//gridThickness.Visibility = Visibility.Hidden;
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";
if (t == null)
{
t = new DispatcherTimer();
t.Tick += OnTimer;
t.Interval = new TimeSpan(0, 0, 0, 0, 200);
t.IsEnabled = true;
t.Start();
}
t.Interval = new TimeSpan(0, 0, 0, 0, 200);
}
private void TimerDealy(object o, EventArgs e)
{
Dispatcher.Invoke(() =>
{
if (Left > 1630)
{
return;
}
//获取鼠标在屏幕上的位置
double mouse_x = Form.MousePosition.X; //需要添加引用System.Drawing
double mouse_y = Form.MousePosition.Y;
bool is_in_collasped_range = (mouse_y > Left + Height) || (mouse_x < Left || mouse_x > Left + Width);//缩起的条件
bool is_in_visiable_range = (mouse_y < 1 && mouse_x >= Left && mouse_x <= Left + Width); //展开的条件
if (Left < 1630 && Left >= 0 && is_in_collasped_range)
{
System.Threading.Thread.Sleep(300);
Left += 20 /*-this.ActualWidth - 3*/;
}
else if (Left < 0 && is_in_visiable_range)
{
Left = 1;
}
});
}
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 Recorddt = DateTime.Now;
DateTime SRTime = Convert.ToDateTime("2020-01-01 00:00:00");
///
/// 时钟回调
///
///
///
private void OnTimer(object sender, EventArgs e)
{
switch (_state)
{
case State.Start:
{
DateTime dt = DateTime.Now;
TimeSpan ts = dt.Subtract(Recorddt);//时间差
double tsmi = ts.TotalMilliseconds;
if (tsmi > 1000.0)
{
Recorddt = Recorddt.AddMilliseconds(1000);
SRTime = SRTime.AddMilliseconds(1000);
}
}
break;
case State.Pause:
{
}
break;
case State.End:
{
SRTime = Convert.ToDateTime("2020-01-01 00:00:00");
//_timeSpan = new TimeSpan();
////_timeSpan = new TimeSpan(0, 23, 12, 45, 54);
}
break;
}
//string time = string.Format("{0:D2}:{1:D2}",/* _timeSpan.Hours,*/ _timeSpan.Minutes, _timeSpan.Seconds);
//char[] times = time.ToCharArray();
if (SRTime.Hour > 0)
{
//Dispatcher.Invoke(() =>
//{
TxbTime.Content = SRTime.ToString("HH:mm:ss");
//});
}
else
{
//Dispatcher.Invoke(() =>
//{
TxbTime.Content = SRTime.ToString("mm:ss");
//});
}
}
///
/// 开始
///
///
///
private void Stack()
{
Recorddt = DateTime.Now;
_state = State.Start;
}
///
/// 暂停
///
private void TimeOut()
{
_state = State.Pause;
}
///
/// 结束
///
///
///
private void End()
{
_state = State.End;
}
#region 录屏
///
/// 设置录屏文件地址
///
private void SetUpVideoPathName()
{
//FileToolsCommon.DeleteDirectory(APP.WKData.WkPath + "temp/");
FileToolsCommon.CreateDirectory(APP.WKData.WkPath);
FileToolsCommon.DeleteDirectory(APP.WKData.WkPath + "temprs/");
VideoSavePathName = APP.WKData.WkPath + APP.WKData.WkName + "_录屏." + ((Enum_VideoType)int.Parse(FileToolsCommon.GetConfigValue("VideoType"))).ToString();
int num = 1;
while (FileToolsCommon.IsExistFile(VideoSavePathName))
{
VideoSavePathName = APP.WKData.WkPath + APP.WKData.WkName + "_录屏_" + num + "." + ((Enum_VideoType)int.Parse(FileToolsCommon.GetConfigValue("VideoType"))).ToString();
num++;
}
}
///
/// 是否已经按下按钮
///
private bool IsPressButton = false;
///
/// 开始或暂停录制
///
///
///
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 (IsSuspend)
{
if (IsFirstRS)
{
#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);
//Thread.Sleep(500);
//麦克风
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);
//APP.W_CountdownWindow.Topmost = true;
}
else
{
APP.W_CountdownWindow.Initialize(true, 1800);
//APP.W_CountdownWindow.Topmost = true;
}
APP.W_CountdownWindow.Show();
}
IsSuspend = false;
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;
//if (APP.SkinStyle == "1")
//{
// ColorType = 0;
// MinToolTop = this.Top + ((this.ActualHeight - btnReturn.ActualHeight) / 2);//(VbxBlue.ActualHeight -)
//}
//else if (APP.SkinStyle == "2")
//{
//MinToolTop = this.Top + ((this.ActualHeight - VbxBlack.ActualHeight) / 2);
//}
APP.W_MinToolbar.Initialize(MinToolTop,ActualHeight);
APP.W_MinToolbar.Show();
}
#endregion
try
{
#region 4秒内不可点击
new Thread(new ThreadStart(new Action(() =>
{
//Dispatcher.Invoke(() =>
//{
// ImgEndRecordingScreen.Source = new BitmapImage(new Uri("pack://application:,,,/Images/Toobar15.png"));
// BtnRecordingScreen.IsEnabled = false;
// BtnStopRecordingScreen.IsEnabled = false;
//});
//Thread.Sleep(4000);
Dispatcher.Invoke(() =>
{
BtnRecordingScreen.IsEnabled = true;
BtnStopRecordingScreen.IsEnabled = true;
BtnRecordingScreenPause.IsEnabled = true;
});
}))).Start();
#endregion
new Thread(new ThreadStart(new Action(() =>
{
if (IsFirstRS)
{
Thread.Sleep(800);
}
if (APP.FFmpeg.myProcess != null)
{
Thread.Sleep(100);
}
System.Drawing.Size DesktopSize = PrimaryScreen.DESKTOP;
bool IsRecordingSound = FileToolsCommon.GetConfigValue("IsRecordingSound") == "1";
bool IsRecordingMicrophone = FileToolsCommon.GetConfigValue("IsRecordingMicrophone") == "1";
bool SynRes = APP.FFmpeg.StartRecordingVideo(VideoSavePathName, DesktopSize, IsRecordingSound, IsRecordingMicrophone, out string ErrMessage, APP.MicrophoneName);
Thread.Sleep(1300);
Dispatcher.Invoke(() =>
{
if (!SynRes)
{
MessageWindow.Show(ErrMessage);
//隐藏画笔工具栏
//BtnToolbarDown_Click(null, null);
//gridToolbar.Visibility = Visibility.Hidden;
//gridColour.Visibility = Visibility.Hidden;
//gridThickness.Visibility = Visibility.Hidden;
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;
IsSuspend = true;
IsFirstRS = true;
return;
}
Stack();
});
}))).Start();
}
catch (Exception ex)
{
MessageWindow.Show(ex.Message);
}
IsFirstRS = false;
}
else
{
TimeOut();
IsSuspend = true;
BtnRecordingScreen.Visibility = Visibility.Visible;
BtnRecordingScreenPause.Visibility = Visibility.Collapsed;
BtnStopRecordingScreen.IsEnabled = false; //停止录制按钮不点击
//imgBlackPenOne.Source = new BitmapImage(new Uri("pack://application:,,,/Images/31.png"));
//btnBlackPenOne.IsEnabled = false;//蓝笔不可点击
//imgBlackPenTwo.Source = new BitmapImage(new Uri("pack://application:,,,/Images/31.png"));
//btnBlackPenTwo.IsEnabled = false;//红笔不可点击
#region 2秒内不可点击
new Thread(new ThreadStart(new Action(() =>
{
//Dispatcher.Invoke(() =>
//{
// ImgEndRecordingScreen.Source = new BitmapImage(new Uri("pack://application:,,,/Images/Toobar15.png"));
// BtnRecordingScreen.IsEnabled = false;
// BtnStopRecordingScreen.IsEnabled = false;
//});
//Thread.Sleep(2000);
Dispatcher.Invoke(() =>
{
BtnRecordingScreen.IsEnabled = true;
BtnStopRecordingScreen.IsEnabled = true;
});
}))).Start();
#endregion
try
{
APP.FFmpeg.SuspendFFmpeg();
}
catch (Exception ex)
{
MessageWindow.Show(ex.Message);
}
}
}
///
/// 停止录像
///
///
///
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();
IsSuspend = true;
TxbTime.Content = "00:00";
End();
if (APP.W_PracticeWindow != null)
{
if (APP.W_PracticeWindow.Visibility == Visibility.Visible)
{
Owner = null;
APP.W_PracticeWindow.ReturnPractice();
}
}
//if (gridToolbar.Visibility == Visibility.Visible)
//{
// GridSrToobar.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();
}
APP.W_XHMicroLessonSystemWindow.InitializeKeyDownEvent();
APP.W_XHMicroLessonSystemWindow.InitPen();
APP.W_XHMicroLessonSystemWindow.InitTQLPPen();
APP.W_XHMicroLessonSystemWindow.Show();
if (!IsFirstRS)
{
try
{
if (SRTime.Hour > 0 || SRTime.Minute > 0 || SRTime.Second > 3)
{
try
{
APP.FFmpeg.StopFFmpeg(VideoSavePathName);
}
catch (Exception ex)
{
LogHelper.WriteErrLog("【停止录屏】(BtnStopRecordingScreen_Click)" + ex.Message, ex);
}
IsFirstRS = true;
//生成缩略图
string ThumbnailPath = FileToolsCommon.GetDirectoryName(VideoSavePathName) + "ThumbnailPath/";
FileToolsCommon.CreateDirectory(ThumbnailPath);
//缩略图存储位置
string ThumbnailPathName = ThumbnailPath + FileToolsCommon.GetIOFileName(VideoSavePathName).Replace(".", "") + ".JPG";
new Thread(new ThreadStart(new Action(() =>
{
while (!FileToolsCommon.IsExistFile(VideoSavePathName))
{
Thread.Sleep(100);
}
FileToolsCommon.DeleteFile(ThumbnailPathName);
//VideoInfo.VideoSize = FileToolsCommon.GetFileSizeByMB(VideoSavePathName).ToString() + " MB";
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;
//VideoInfo.Savefolder = APP.UserInfo.Schoolid + "/resource";
if (!APP.VideoList.Exists(x => x.FileGuid == VideoInfo.FileGuid) || !APP.VideoList.Exists(x => x.VideoPath == VideoInfo.VideoPath))
{
APP.VideoList.Add(VideoInfo);
//保存数据
APP.SaveWkData();
}
}))).Start();
Click_stopRecordingScreen();
}
else
{
//视频过短
APP.FFmpeg.SuspendFFmpeg();
IsFirstRS = true;
MessageWindow.Show("录屏时间过短,请重新录制!");
}
new Thread(new ThreadStart(new Action(() =>
{
Thread.Sleep(700);
Dispatcher.Invoke(() =>
{
if (APP.W_MinToolbar != null)
{
APP.W_MinToolbar.Hide();
}
});
}))).Start();
}
catch (Exception ex)
{
LogHelper.WriteErrLog("【停止录屏】(BtnStopRecordingScreen_Click)" + ex.Message, ex);
}
}
Hide();
}
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 (!IsFirstRS)
{
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 BtnBlackPen_Click(object sender, RoutedEventArgs e)
{
}
///
/// 移动工具栏
///
///
///
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)
{
//Dispatcher.Invoke(() =>
//{
// borOne.Background = new SolidColorBrush(Colors.DodgerBlue);
// borTwo.Background = new SolidColorBrush(Colors.DodgerBlue);
//});
flg = 0;
//this.Owner = null;
APP.W_PracticeWindow.ReturnPractice();
}
else if (flg == 11)
{
//Dispatcher.Invoke(() =>
//{
// borTwo.Background = new SolidColorBrush(Colors.LightSkyBlue);
// borOne.Background = new SolidColorBrush(Colors.DodgerBlue);
//});
flg = 10;
APP.W_PracticeWindow.Red();
}
else
{
//Dispatcher.Invoke(() =>
//{
// borTwo.Background = new SolidColorBrush(Colors.LightSkyBlue);
// borOne.Background = new SolidColorBrush(Colors.DodgerBlue);
//});
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 = 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 RightButtonDown()
{
if (flg > 9)
{
Owner = null;
APP.W_PracticeWindow.Hide();
}
else
{
//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 (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);
if (flg == 0)
{
flg = 10;
APP.W_PracticeWindow.Red();
}
else
{
flg = 11;
APP.W_PracticeWindow.Blue();
}
APP.W_PracticeWindow.Show();
}
catch (Exception ex)
{
LogHelper.WriteErrLog("【批注(PracticeWindow)" + ex.Message, ex);
}
}
}
///
/// 返回主界面
///
///
///
private void BtnReturn_Click(object sender, RoutedEventArgs e)
{
if (!IsFirstRS)
{
MessageBoxResult br = MessageWindow.Show("退出将取消保存当前录屏,是否继续?", "提示", MessageBoxButton.OKCancel);
if (br == MessageBoxResult.Cancel)
{
return;
}
k_hook.Stop();
BtnRecordingScreen.ToolTip = "开始";
IsSuspend = true;
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);
}
IsFirstRS = true;
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 ReturnPractice()
{
new Thread(new ThreadStart(new Action(() =>
{
//Dispatcher.Invoke(() =>
//{
// borOne.Background = new SolidColorBrush(Colors.DodgerBlue);
// borTwo.Background = new SolidColorBrush(Colors.DodgerBlue);
//});
flg = 0;
Thread.Sleep(500);
Dispatcher.Invoke(() =>
{
Owner = null;
APP.W_PracticeWindow.Hide();
});
}))).Start();
}
///
/// 修改笔状态
///
public void ModifyState()
{
BtnPenBlue.Visibility = Visibility.Visible;
BtnPenRed.Visibility = Visibility.Visible;
BtnPenBlue_CL.Visibility = Visibility.Collapsed;
BtnPenRed_CL.Visibility = Visibility.Collapsed;
//borOne.Background = new SolidColorBrush(Colors.DodgerBlue);
//borTwo.Background = new SolidColorBrush(Colors.DodgerBlue);
}
///
/// 切换页面
///
void SwitchPages()
{
//SendKeys.SendWait("%{TAB}");
MouseEventCommon.MouseMiddleClickEvent(0);
}
//bool isToobar = false;
///
/// 在工具条区域内
///
///
///
private void gridToobarTwo_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e)
{
//isToobar = true;
}
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;
//int ColorType = 0;
//if (APP.SkinStyle == "1")
//{
// ColorType = 0;
// MinToolTop = this.Top + ((this.ActualHeight - btnReturn.ActualHeight) / 2);
//}
//else if (APP.SkinStyle == "2")
//{
// ColorType = 1;
// MinToolTop = this.Top + ((this.ActualHeight - VbxBlack.ActualHeight) / 2);
//}
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();
}
}
}
}
}