界面修改
This commit is contained in:
@@ -19,6 +19,9 @@ namespace Camera
|
|||||||
// 定时器
|
// 定时器
|
||||||
private System.Timers.Timer _timer;
|
private System.Timers.Timer _timer;
|
||||||
|
|
||||||
|
// 当前图像
|
||||||
|
private Image _currentImage;
|
||||||
|
|
||||||
// 事件定义
|
// 事件定义
|
||||||
public event EventHandler<ImageEventArgs> ImageCaptured;
|
public event EventHandler<ImageEventArgs> ImageCaptured;
|
||||||
|
|
||||||
@@ -29,8 +32,6 @@ namespace Camera
|
|||||||
/// <returns>对应区域的颜色</returns>
|
/// <returns>对应区域的颜色</returns>
|
||||||
public Color GetColor(int AreaNum)
|
public Color GetColor(int AreaNum)
|
||||||
{
|
{
|
||||||
// 这里可以根据实际需求实现颜色获取逻辑
|
|
||||||
// 暂时返回一个默认颜色
|
|
||||||
switch (AreaNum)
|
switch (AreaNum)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
@@ -44,15 +45,21 @@ namespace Camera
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取当前图像
|
||||||
|
/// </summary>
|
||||||
|
public Image GetCurrentImage()
|
||||||
|
{
|
||||||
|
return _currentImage;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 开始获取图像
|
/// 开始获取图像
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Start()
|
public void Start()
|
||||||
{
|
{
|
||||||
// 停止现有的定时器
|
|
||||||
Stop();
|
Stop();
|
||||||
|
|
||||||
// 创建新的定时器,设置为300ms触发一次,关闭自动重置
|
|
||||||
_timer = new System.Timers.Timer(300);
|
_timer = new System.Timers.Timer(300);
|
||||||
_timer.AutoReset = false;
|
_timer.AutoReset = false;
|
||||||
_timer.Elapsed += Timer_Elapsed;
|
_timer.Elapsed += Timer_Elapsed;
|
||||||
@@ -72,6 +79,19 @@ namespace Camera
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 打开设置窗口
|
||||||
|
/// </summary>
|
||||||
|
public void SetArea()
|
||||||
|
{
|
||||||
|
Setting settingForm = new Setting();
|
||||||
|
if (_currentImage != null)
|
||||||
|
{
|
||||||
|
settingForm.SetImage(_currentImage);
|
||||||
|
}
|
||||||
|
settingForm.ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 定时器触发事件
|
/// 定时器触发事件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -79,22 +99,23 @@ namespace Camera
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// 获取图像
|
|
||||||
Image image = GetCameraImage();
|
Image image = GetCameraImage();
|
||||||
if (image != null)
|
if (image != null)
|
||||||
{
|
{
|
||||||
// 发布事件
|
if (_currentImage != null)
|
||||||
|
{
|
||||||
|
_currentImage.Dispose();
|
||||||
|
}
|
||||||
|
_currentImage = image;
|
||||||
OnImageCaptured(new ImageEventArgs { Image = image });
|
OnImageCaptured(new ImageEventArgs { Image = image });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
// 忽略错误,继续下一次获取
|
|
||||||
Console.WriteLine("获取图像失败: " + ex.Message);
|
Console.WriteLine("获取图像失败: " + ex.Message);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
// 重新启动定时器
|
|
||||||
if (_timer != null && _timer.Enabled == false)
|
if (_timer != null && _timer.Enabled == false)
|
||||||
{
|
{
|
||||||
_timer.Start();
|
_timer.Start();
|
||||||
@@ -107,37 +128,29 @@ namespace Camera
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private Image GetCameraImage()
|
private Image GetCameraImage()
|
||||||
{
|
{
|
||||||
// 构建请求URL
|
|
||||||
string url = "http://" + IP + SNAPSHOT_URI;
|
string url = "http://" + IP + SNAPSHOT_URI;
|
||||||
|
|
||||||
// 创建Web请求
|
|
||||||
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
|
||||||
request.Method = "GET";
|
request.Method = "GET";
|
||||||
|
|
||||||
HttpWebResponse response = null;
|
HttpWebResponse response = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// 发送请求,获取响应
|
|
||||||
response = (HttpWebResponse)request.GetResponse();
|
response = (HttpWebResponse)request.GetResponse();
|
||||||
}
|
}
|
||||||
catch (System.Net.WebException ex)
|
catch (System.Net.WebException ex)
|
||||||
{
|
{
|
||||||
// 检查是否是401未授权错误
|
|
||||||
if (ex.Response != null && ((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.Unauthorized)
|
if (ex.Response != null && ((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.Unauthorized)
|
||||||
{
|
{
|
||||||
// 获取鉴权信息
|
|
||||||
response = (HttpWebResponse)ex.Response;
|
response = (HttpWebResponse)ex.Response;
|
||||||
string authHeader = response.Headers["WWW-Authenticate"];
|
string authHeader = response.Headers["WWW-Authenticate"];
|
||||||
response.Close();
|
response.Close();
|
||||||
|
|
||||||
// 提取realm和nonce
|
|
||||||
string realm = ExtractAuthParam(authHeader, "realm");
|
string realm = ExtractAuthParam(authHeader, "realm");
|
||||||
string nonce = ExtractAuthParam(authHeader, "nonce");
|
string nonce = ExtractAuthParam(authHeader, "nonce");
|
||||||
|
|
||||||
// 生成鉴权信息
|
|
||||||
string authorization = GenerateDigestAuthorization(USER, PASSWD, realm, nonce, "GET", SNAPSHOT_URI);
|
string authorization = GenerateDigestAuthorization(USER, PASSWD, realm, nonce, "GET", SNAPSHOT_URI);
|
||||||
|
|
||||||
// 重新发送请求,带上鉴权信息
|
|
||||||
request = (HttpWebRequest)WebRequest.Create(url);
|
request = (HttpWebRequest)WebRequest.Create(url);
|
||||||
request.Method = "GET";
|
request.Method = "GET";
|
||||||
request.Headers.Add("Authorization", authorization);
|
request.Headers.Add("Authorization", authorization);
|
||||||
@@ -145,15 +158,12 @@ namespace Camera
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// 其他Web异常,抛出
|
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 读取响应流中的图片数据
|
|
||||||
using (Stream stream = response.GetResponseStream())
|
using (Stream stream = response.GetResponseStream())
|
||||||
{
|
{
|
||||||
// 将流转换为Image对象
|
|
||||||
Image image = Image.FromStream(stream);
|
Image image = Image.FromStream(stream);
|
||||||
response.Close();
|
response.Close();
|
||||||
return image;
|
return image;
|
||||||
@@ -179,14 +189,10 @@ namespace Camera
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private string GenerateDigestAuthorization(string username, string password, string realm, string nonce, string method, string uri)
|
private string GenerateDigestAuthorization(string username, string password, string realm, string nonce, string method, string uri)
|
||||||
{
|
{
|
||||||
// 计算HA1 = MD5(username:realm:password)
|
|
||||||
string ha1 = CalculateMD5(username + ":" + realm + ":" + password);
|
string ha1 = CalculateMD5(username + ":" + realm + ":" + password);
|
||||||
// 计算HA2 = MD5(method:uri)
|
|
||||||
string ha2 = CalculateMD5(method + ":" + uri);
|
string ha2 = CalculateMD5(method + ":" + uri);
|
||||||
// 计算response = MD5(ha1:nonce:ha2)
|
|
||||||
string response = CalculateMD5(ha1 + ":" + nonce + ":" + ha2);
|
string response = CalculateMD5(ha1 + ":" + nonce + ":" + ha2);
|
||||||
|
|
||||||
// 构建Authorization头
|
|
||||||
return string.Format("Digest username=\"{0}\", realm=\"{1}\", nonce=\"{2}\", uri=\"{3}\", response=\"{4}\"",
|
return string.Format("Digest username=\"{0}\", realm=\"{1}\", nonce=\"{2}\", uri=\"{3}\", response=\"{4}\"",
|
||||||
username, realm, nonce, uri, response);
|
username, realm, nonce, uri, response);
|
||||||
}
|
}
|
||||||
@@ -201,7 +207,6 @@ namespace Camera
|
|||||||
byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(input);
|
byte[] inputBytes = System.Text.Encoding.UTF8.GetBytes(input);
|
||||||
byte[] hashBytes = md5.ComputeHash(inputBytes);
|
byte[] hashBytes = md5.ComputeHash(inputBytes);
|
||||||
|
|
||||||
// 将字节数组转换为十六进制字符串
|
|
||||||
System.Text.StringBuilder sb = new System.Text.StringBuilder();
|
System.Text.StringBuilder sb = new System.Text.StringBuilder();
|
||||||
for (int i = 0; i < hashBytes.Length; i++)
|
for (int i = 0; i < hashBytes.Length; i++)
|
||||||
{
|
{
|
||||||
@@ -228,9 +233,6 @@ namespace Camera
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class ImageEventArgs : EventArgs
|
public class ImageEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// 捕获的图像
|
|
||||||
/// </summary>
|
|
||||||
public Image Image { get; set; }
|
public Image Image { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,15 +2,8 @@ namespace Camera
|
|||||||
{
|
{
|
||||||
partial class Setting
|
partial class Setting
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// 必需的设计器变量。
|
|
||||||
/// </summary>
|
|
||||||
private System.ComponentModel.IContainer components = null;
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 清理所有正在使用的资源。
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
|
||||||
protected override void Dispose(bool disposing)
|
protected override void Dispose(bool disposing)
|
||||||
{
|
{
|
||||||
if (disposing && (components != null))
|
if (disposing && (components != null))
|
||||||
@@ -22,23 +15,25 @@ namespace Camera
|
|||||||
|
|
||||||
#region Windows 窗体设计器生成的代码
|
#region Windows 窗体设计器生成的代码
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 设计器支持所需的方法 - 不要修改
|
|
||||||
/// 使用代码编辑器修改此方法的内容。
|
|
||||||
/// </summary>
|
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
|
||||||
this.picBoxCamera = new System.Windows.Forms.PictureBox();
|
this.picBoxCamera = new System.Windows.Forms.PictureBox();
|
||||||
|
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
|
||||||
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
|
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
|
||||||
|
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
||||||
this.listBox1 = new System.Windows.Forms.ListBox();
|
this.listBox1 = new System.Windows.Forms.ListBox();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
this.splitContainer1.Panel1.SuspendLayout();
|
||||||
|
this.splitContainer1.Panel2.SuspendLayout();
|
||||||
|
this.splitContainer1.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picBoxCamera)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.picBoxCamera)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.toolStrip1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||||
|
this.splitContainer2.Panel1.SuspendLayout();
|
||||||
|
this.splitContainer2.Panel2.SuspendLayout();
|
||||||
|
this.splitContainer2.SuspendLayout();
|
||||||
|
this.toolStrip1.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// splitContainer1
|
// splitContainer1
|
||||||
@@ -46,96 +41,118 @@ namespace Camera
|
|||||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
|
this.splitContainer1.Location = new System.Drawing.Point(0, 0);
|
||||||
this.splitContainer1.Name = "splitContainer1";
|
this.splitContainer1.Name = "splitContainer1";
|
||||||
// 左侧面板宽度
|
//
|
||||||
this.splitContainer1.Panel1MinSize = 300;
|
// splitContainer1.Panel1
|
||||||
// 右侧面板宽度
|
//
|
||||||
|
this.splitContainer1.Panel1.Controls.Add(this.picBoxCamera);
|
||||||
|
this.splitContainer1.Panel1MinSize = 0;
|
||||||
|
//
|
||||||
|
// splitContainer1.Panel2
|
||||||
|
//
|
||||||
|
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
||||||
this.splitContainer1.Panel2MinSize = 200;
|
this.splitContainer1.Panel2MinSize = 200;
|
||||||
this.splitContainer1.Size = new System.Drawing.Size(850, 469);
|
this.splitContainer1.Size = new System.Drawing.Size(850, 469);
|
||||||
this.splitContainer1.SplitterDistance = 500;
|
this.splitContainer1.SplitterDistance = 100;
|
||||||
this.splitContainer1.TabIndex = 0;
|
this.splitContainer1.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// picBoxCamera
|
// picBoxCamera
|
||||||
//
|
//
|
||||||
this.picBoxCamera = new System.Windows.Forms.PictureBox();
|
this.picBoxCamera.BackColor = System.Drawing.Color.Gray;
|
||||||
this.picBoxCamera.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.picBoxCamera.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.picBoxCamera.Location = new System.Drawing.Point(0, 0);
|
this.picBoxCamera.Location = new System.Drawing.Point(0, 0);
|
||||||
this.picBoxCamera.Name = "picBoxCamera";
|
this.picBoxCamera.Name = "picBoxCamera";
|
||||||
this.picBoxCamera.Size = new System.Drawing.Size(500, 469);
|
this.picBoxCamera.Size = new System.Drawing.Size(100, 469);
|
||||||
|
this.picBoxCamera.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||||
this.picBoxCamera.TabIndex = 0;
|
this.picBoxCamera.TabIndex = 0;
|
||||||
this.picBoxCamera.TabStop = false;
|
this.picBoxCamera.TabStop = false;
|
||||||
this.splitContainer1.Panel1.Controls.Add(this.picBoxCamera);
|
this.picBoxCamera.Paint += new System.Windows.Forms.PaintEventHandler(this.PicBoxCamera_Paint);
|
||||||
|
this.picBoxCamera.MouseDown += new System.Windows.Forms.MouseEventHandler(this.PicBoxCamera_MouseDown);
|
||||||
|
this.picBoxCamera.MouseMove += new System.Windows.Forms.MouseEventHandler(this.PicBoxCamera_MouseMove);
|
||||||
|
this.picBoxCamera.MouseUp += new System.Windows.Forms.MouseEventHandler(this.PicBoxCamera_MouseUp);
|
||||||
//
|
//
|
||||||
// splitContainer2
|
// splitContainer2
|
||||||
//
|
//
|
||||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
|
||||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.splitContainer2.IsSplitterFixed = false;
|
||||||
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
|
this.splitContainer2.Location = new System.Drawing.Point(0, 0);
|
||||||
this.splitContainer2.Name = "splitContainer2";
|
this.splitContainer2.Name = "splitContainer2";
|
||||||
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||||
// 上方面板高度
|
//
|
||||||
this.splitContainer2.Panel1MinSize = 50;
|
// splitContainer2.Panel1
|
||||||
// 下方面板高度
|
//
|
||||||
|
this.splitContainer2.Panel1.Controls.Add(this.toolStrip1);
|
||||||
|
this.splitContainer2.Panel1MinSize = 40;
|
||||||
|
//
|
||||||
|
// splitContainer2.Panel2
|
||||||
|
//
|
||||||
|
this.splitContainer2.Panel2.Controls.Add(this.listBox1);
|
||||||
this.splitContainer2.Panel2MinSize = 100;
|
this.splitContainer2.Panel2MinSize = 100;
|
||||||
this.splitContainer2.Size = new System.Drawing.Size(346, 469);
|
this.splitContainer2.Size = new System.Drawing.Size(746, 469);
|
||||||
this.splitContainer2.SplitterDistance = 100;
|
|
||||||
this.splitContainer2.TabIndex = 0;
|
this.splitContainer2.TabIndex = 0;
|
||||||
//
|
//
|
||||||
// toolStrip1
|
// toolStrip1
|
||||||
//
|
//
|
||||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
|
||||||
this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.toolStrip1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(20, 20);
|
||||||
|
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
|
this.toolStripButton2,
|
||||||
|
this.toolStripButton1});
|
||||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||||
this.toolStrip1.Name = "toolStrip1";
|
this.toolStrip1.Name = "toolStrip1";
|
||||||
this.toolStrip1.Size = new System.Drawing.Size(346, 100);
|
this.toolStrip1.Size = new System.Drawing.Size(746, 50);
|
||||||
this.toolStrip1.TabIndex = 0;
|
this.toolStrip1.TabIndex = 0;
|
||||||
this.toolStrip1.Text = "toolStrip1";
|
this.toolStrip1.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStrip1_ItemClicked);
|
||||||
// 添加一些示例按钮
|
|
||||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
|
||||||
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
|
|
||||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
|
||||||
this.toolStripButton1,
|
|
||||||
this.toolStripButton2});
|
|
||||||
//
|
|
||||||
// toolStripButton1
|
|
||||||
//
|
|
||||||
this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
|
||||||
this.toolStripButton1.Name = "toolStripButton1";
|
|
||||||
this.toolStripButton1.Size = new System.Drawing.Size(52, 97);
|
|
||||||
this.toolStripButton1.Text = "按钮1";
|
|
||||||
//
|
//
|
||||||
// toolStripButton2
|
// toolStripButton2
|
||||||
//
|
//
|
||||||
this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
this.toolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||||
this.toolStripButton2.Name = "toolStripButton2";
|
this.toolStripButton2.Name = "toolStripButton2";
|
||||||
this.toolStripButton2.Size = new System.Drawing.Size(52, 97);
|
this.toolStripButton2.Size = new System.Drawing.Size(43, 47);
|
||||||
this.toolStripButton2.Text = "按钮2";
|
this.toolStripButton2.Text = "新建";
|
||||||
this.splitContainer2.Panel1.Controls.Add(this.toolStrip1);
|
this.toolStripButton2.Click += new System.EventHandler(this.ToolStripButton2_Click);
|
||||||
|
//
|
||||||
|
// toolStripButton1
|
||||||
|
//
|
||||||
|
this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||||
|
this.toolStripButton1.Name = "toolStripButton1";
|
||||||
|
this.toolStripButton1.Size = new System.Drawing.Size(43, 47);
|
||||||
|
this.toolStripButton1.Text = "保存";
|
||||||
|
this.toolStripButton1.Click += new System.EventHandler(this.ToolStripButton1_Click);
|
||||||
//
|
//
|
||||||
// listBox1
|
// listBox1
|
||||||
//
|
//
|
||||||
this.listBox1 = new System.Windows.Forms.ListBox();
|
|
||||||
this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.listBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.listBox1.FormattingEnabled = true;
|
||||||
|
this.listBox1.ItemHeight = 15;
|
||||||
this.listBox1.Location = new System.Drawing.Point(0, 0);
|
this.listBox1.Location = new System.Drawing.Point(0, 0);
|
||||||
this.listBox1.Name = "listBox1";
|
this.listBox1.Name = "listBox1";
|
||||||
this.listBox1.Size = new System.Drawing.Size(346, 365);
|
this.listBox1.Size = new System.Drawing.Size(746, 415);
|
||||||
this.listBox1.TabIndex = 0;
|
this.listBox1.TabIndex = 0;
|
||||||
this.splitContainer2.Panel2.Controls.Add(this.listBox1);
|
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.ListBox1_SelectedIndexChanged);
|
||||||
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
|
|
||||||
//
|
//
|
||||||
// Setting
|
// Setting
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(850, 469);
|
this.ClientSize = new System.Drawing.Size(905, 515);
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
this.Controls.Add(this.splitContainer1);
|
this.Controls.Add(this.splitContainer1);
|
||||||
this.Name = "Setting";
|
this.Name = "Setting";
|
||||||
this.Text = "设置";
|
this.Text = "设置";
|
||||||
|
this.Load += new System.EventHandler(this.Setting_Load);
|
||||||
|
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||||
|
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
this.splitContainer1.ResumeLayout(false);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.picBoxCamera)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.picBoxCamera)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.toolStrip1)).EndInit();
|
this.splitContainer2.Panel1.ResumeLayout(false);
|
||||||
|
this.splitContainer2.Panel1.PerformLayout();
|
||||||
|
this.splitContainer2.Panel2.ResumeLayout(false);
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||||
|
this.splitContainer2.ResumeLayout(false);
|
||||||
|
this.toolStrip1.ResumeLayout(false);
|
||||||
|
this.toolStrip1.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,5 +166,4 @@ namespace Camera
|
|||||||
private System.Windows.Forms.ToolStripButton toolStripButton2;
|
private System.Windows.Forms.ToolStripButton toolStripButton2;
|
||||||
private System.Windows.Forms.ListBox listBox1;
|
private System.Windows.Forms.ListBox listBox1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
@@ -13,49 +14,343 @@ namespace Camera
|
|||||||
{
|
{
|
||||||
private Camera _camera;
|
private Camera _camera;
|
||||||
|
|
||||||
|
private Rectangle _detectionZone;
|
||||||
|
private Rectangle _ledZone;
|
||||||
|
private int _selectedZoneIndex = -1;
|
||||||
|
private bool _isDrawing = false;
|
||||||
|
private bool _isMoving = false;
|
||||||
|
private Point _startPoint;
|
||||||
|
private Rectangle _originalZone;
|
||||||
|
|
||||||
|
private Color[] _zoneColors = new Color[] { Color.Red, Color.Green, Color.Blue, Color.Yellow, Color.Cyan, Color.Magenta };
|
||||||
|
|
||||||
public Setting()
|
public Setting()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
InitializeForm();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeForm()
|
public void SetImage(Image image)
|
||||||
|
{
|
||||||
|
if (picBoxCamera.Image != null)
|
||||||
|
{
|
||||||
|
picBoxCamera.Image.Dispose();
|
||||||
|
}
|
||||||
|
picBoxCamera.Image = (Image)image.Clone();
|
||||||
|
_detectionZone = new Rectangle(0, 0, picBoxCamera.Image.Width, picBoxCamera.Image.Height);
|
||||||
|
_ledZone = new Rectangle(0, 0, 50, 50);
|
||||||
|
LoadConfig();
|
||||||
|
picBoxCamera.Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Setting_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
// 初始化相机对象
|
|
||||||
_camera = new Camera();
|
_camera = new Camera();
|
||||||
|
|
||||||
// 为工具栏按钮添加点击事件
|
|
||||||
toolStripButton1.Click += ToolStripButton1_Click;
|
|
||||||
toolStripButton2.Click += ToolStripButton2_Click;
|
|
||||||
|
|
||||||
// 初始化列表框数据
|
|
||||||
InitializeListBox();
|
|
||||||
|
|
||||||
// 设置图片框的默认背景色
|
|
||||||
picBoxCamera.BackColor = Color.Gray;
|
picBoxCamera.BackColor = Color.Gray;
|
||||||
|
splitContainer1.Panel2MinSize = 200;
|
||||||
|
splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
|
||||||
|
splitContainer1.SplitterDistance = splitContainer1.Width - 200;
|
||||||
|
splitContainer2.Panel1MinSize = 40;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitializeListBox()
|
private void LoadConfig()
|
||||||
{
|
{
|
||||||
// 添加一些示例数据到列表框
|
string configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Camera.csv");
|
||||||
listBox1.Items.Add("区域 1 - 红色");
|
if (File.Exists(configPath))
|
||||||
listBox1.Items.Add("区域 2 - 绿色");
|
{
|
||||||
listBox1.Items.Add("区域 3 - 蓝色");
|
try
|
||||||
listBox1.Items.Add("区域 4 - 灰色");
|
{
|
||||||
|
_detectionZone = new Rectangle(0, 0, 0, 0);
|
||||||
|
_ledZone = new Rectangle(0, 0, 0, 0);
|
||||||
|
|
||||||
|
using (StreamReader reader = new StreamReader(configPath, Encoding.UTF8))
|
||||||
|
{
|
||||||
|
string line;
|
||||||
|
bool isFirstLine = true;
|
||||||
|
while ((line = reader.ReadLine()) != null)
|
||||||
|
{
|
||||||
|
if (isFirstLine)
|
||||||
|
{
|
||||||
|
isFirstLine = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
string[] parts = line.Split(',');
|
||||||
|
if (parts.Length >= 5)
|
||||||
|
{
|
||||||
|
int index = int.Parse(parts[0]);
|
||||||
|
int x = int.Parse(parts[1]);
|
||||||
|
int y = int.Parse(parts[2]);
|
||||||
|
int width = int.Parse(parts[3]);
|
||||||
|
int height = int.Parse(parts[4]);
|
||||||
|
Color color = parts.Length > 5 ? ColorTranslator.FromHtml(parts[5]) : Color.Red;
|
||||||
|
|
||||||
|
Rectangle zone = new Rectangle(x, y, width, height);
|
||||||
|
|
||||||
|
if (index == 0)
|
||||||
|
{
|
||||||
|
_detectionZone = zone;
|
||||||
|
}
|
||||||
|
else if (index == 1)
|
||||||
|
{
|
||||||
|
_ledZone = zone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateListBox();
|
||||||
|
picBoxCamera.Invalidate();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("加载配置失败: " + ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (picBoxCamera.Image != null)
|
||||||
|
{
|
||||||
|
_detectionZone = new Rectangle(10, 10, picBoxCamera.Image.Width - 20, picBoxCamera.Image.Height - 20);
|
||||||
|
_ledZone = new Rectangle(picBoxCamera.Image.Width - 60, 10, 50, 50);
|
||||||
|
}
|
||||||
|
UpdateListBox();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SaveConfig()
|
||||||
|
{
|
||||||
|
string configPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Camera.csv");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (StreamWriter writer = new StreamWriter(configPath, false, Encoding.UTF8))
|
||||||
|
{
|
||||||
|
writer.WriteLine("索引,X坐标,Y坐标,宽度,高度,颜色");
|
||||||
|
|
||||||
|
if (_detectionZone.Width > 0 && _detectionZone.Height > 0)
|
||||||
|
{
|
||||||
|
writer.WriteLine(string.Format("0,{0},{1},{2},{3},#FF0000", _detectionZone.X, _detectionZone.Y, _detectionZone.Width, _detectionZone.Height));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_ledZone.Width > 0 && _ledZone.Height > 0)
|
||||||
|
{
|
||||||
|
writer.WriteLine(string.Format("1,{0},{1},{2},{3},#00FF00", _ledZone.X, _ledZone.Y, _ledZone.Width, _ledZone.Height));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageBox.Show("配置已保存到: " + configPath);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("保存配置失败: " + ex.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateListBox()
|
||||||
|
{
|
||||||
|
listBox1.Items.Clear();
|
||||||
|
|
||||||
|
if (_detectionZone.Width > 0 && _detectionZone.Height > 0)
|
||||||
|
{
|
||||||
|
listBox1.Items.Add(string.Format("检测区: X={0}, Y={1}, W={2}, H={3}", _detectionZone.X, _detectionZone.Y, _detectionZone.Width, _detectionZone.Height));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_ledZone.Width > 0 && _ledZone.Height > 0)
|
||||||
|
{
|
||||||
|
listBox1.Items.Add(string.Format("Led区: X={0}, Y={1}, W={2}, H={3}", _ledZone.X, _ledZone.Y, _ledZone.Width, _ledZone.Height));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PicBoxCamera_Paint(object sender, PaintEventArgs e)
|
||||||
|
{
|
||||||
|
if (picBoxCamera.Image == null) return;
|
||||||
|
|
||||||
|
Graphics g = e.Graphics;
|
||||||
|
|
||||||
|
float scaleX = (float)picBoxCamera.ClientSize.Width / picBoxCamera.Image.Width;
|
||||||
|
float scaleY = (float)picBoxCamera.ClientSize.Height / picBoxCamera.Image.Height;
|
||||||
|
|
||||||
|
Rectangle scaledDetectionZone = new Rectangle(
|
||||||
|
(int)(_detectionZone.X * scaleX),
|
||||||
|
(int)(_detectionZone.Y * scaleY),
|
||||||
|
(int)(_detectionZone.Width * scaleX),
|
||||||
|
(int)(_detectionZone.Height * scaleY)
|
||||||
|
);
|
||||||
|
|
||||||
|
Rectangle scaledLedZone = new Rectangle(
|
||||||
|
(int)(_ledZone.X * scaleX),
|
||||||
|
(int)(_ledZone.Y * scaleY),
|
||||||
|
(int)(_ledZone.Width * scaleX),
|
||||||
|
(int)(_ledZone.Height * scaleY)
|
||||||
|
);
|
||||||
|
|
||||||
|
using (Pen pen = new Pen(Color.Red, 2))
|
||||||
|
{
|
||||||
|
g.DrawRectangle(pen, scaledDetectionZone);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (Pen pen = new Pen(Color.Green, 2))
|
||||||
|
{
|
||||||
|
g.DrawRectangle(pen, scaledLedZone);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (Font font = new Font("Arial", 10))
|
||||||
|
{
|
||||||
|
g.DrawString("检测区", font, Brushes.Red, scaledDetectionZone.X, scaledDetectionZone.Y - 15);
|
||||||
|
g.DrawString("Led区", font, Brushes.Green, scaledLedZone.X, scaledLedZone.Y - 15);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_selectedZoneIndex == 0)
|
||||||
|
{
|
||||||
|
DrawSelectionHandles(g, scaledDetectionZone);
|
||||||
|
}
|
||||||
|
else if (_selectedZoneIndex == 1)
|
||||||
|
{
|
||||||
|
DrawSelectionHandles(g, scaledLedZone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DrawSelectionHandles(Graphics g, Rectangle rect)
|
||||||
|
{
|
||||||
|
int handleSize = 8;
|
||||||
|
using (Brush brush = new SolidBrush(Color.White))
|
||||||
|
using (Pen pen = new Pen(Color.Blue, 2))
|
||||||
|
{
|
||||||
|
g.FillRectangle(brush, rect.X - handleSize / 2, rect.Y - handleSize / 2, handleSize, handleSize);
|
||||||
|
g.FillRectangle(brush, rect.X + rect.Width - handleSize / 2, rect.Y - handleSize / 2, handleSize, handleSize);
|
||||||
|
g.FillRectangle(brush, rect.X - handleSize / 2, rect.Y + rect.Height - handleSize / 2, handleSize, handleSize);
|
||||||
|
g.FillRectangle(brush, rect.X + rect.Width - handleSize / 2, rect.Y + rect.Height - handleSize / 2, handleSize, handleSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PicBoxCamera_MouseDown(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (picBoxCamera.Image == null) return;
|
||||||
|
|
||||||
|
float scaleX = (float)picBoxCamera.Image.Width / picBoxCamera.ClientSize.Width;
|
||||||
|
float scaleY = (float)picBoxCamera.Image.Height / picBoxCamera.ClientSize.Height;
|
||||||
|
Point imagePoint = new Point((int)(e.X * scaleX), (int)(e.Y * scaleY));
|
||||||
|
|
||||||
|
if (_detectionZone.Contains(imagePoint))
|
||||||
|
{
|
||||||
|
_selectedZoneIndex = 0;
|
||||||
|
_isMoving = true;
|
||||||
|
_startPoint = imagePoint;
|
||||||
|
_originalZone = _detectionZone;
|
||||||
|
}
|
||||||
|
else if (_ledZone.Contains(imagePoint))
|
||||||
|
{
|
||||||
|
_selectedZoneIndex = 1;
|
||||||
|
_isMoving = true;
|
||||||
|
_startPoint = imagePoint;
|
||||||
|
_originalZone = _ledZone;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_selectedZoneIndex = -1;
|
||||||
|
_isDrawing = true;
|
||||||
|
_startPoint = imagePoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateListBox();
|
||||||
|
picBoxCamera.Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PicBoxCamera_MouseMove(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (picBoxCamera.Image == null) return;
|
||||||
|
|
||||||
|
float scaleX = (float)picBoxCamera.Image.Width / picBoxCamera.ClientSize.Width;
|
||||||
|
float scaleY = (float)picBoxCamera.Image.Height / picBoxCamera.ClientSize.Height;
|
||||||
|
Point imagePoint = new Point((int)(e.X * scaleX), (int)(e.Y * scaleY));
|
||||||
|
|
||||||
|
if (_isMoving && _selectedZoneIndex >= 0)
|
||||||
|
{
|
||||||
|
int dx = imagePoint.X - _startPoint.X;
|
||||||
|
int dy = imagePoint.Y - _startPoint.Y;
|
||||||
|
|
||||||
|
Rectangle newZone = new Rectangle(
|
||||||
|
_originalZone.X + dx,
|
||||||
|
_originalZone.Y + dy,
|
||||||
|
_originalZone.Width,
|
||||||
|
_originalZone.Height
|
||||||
|
);
|
||||||
|
|
||||||
|
if (newZone.X >= 0 && newZone.Y >= 0 &&
|
||||||
|
newZone.X + newZone.Width <= picBoxCamera.Image.Width &&
|
||||||
|
newZone.Y + newZone.Height <= picBoxCamera.Image.Height)
|
||||||
|
{
|
||||||
|
if (_selectedZoneIndex == 0)
|
||||||
|
{
|
||||||
|
_detectionZone = newZone;
|
||||||
|
}
|
||||||
|
else if (_selectedZoneIndex == 1)
|
||||||
|
{
|
||||||
|
_ledZone = newZone;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateListBox();
|
||||||
|
picBoxCamera.Invalidate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PicBoxCamera_MouseUp(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (picBoxCamera.Image == null) return;
|
||||||
|
|
||||||
|
float scaleX = (float)picBoxCamera.Image.Width / picBoxCamera.ClientSize.Width;
|
||||||
|
float scaleY = (float)picBoxCamera.Image.Height / picBoxCamera.ClientSize.Height;
|
||||||
|
Point imagePoint = new Point((int)(e.X * scaleX), (int)(e.Y * scaleY));
|
||||||
|
|
||||||
|
if (_isDrawing && !_isMoving)
|
||||||
|
{
|
||||||
|
int x = Math.Min(_startPoint.X, imagePoint.X);
|
||||||
|
int y = Math.Min(_startPoint.Y, imagePoint.Y);
|
||||||
|
int width = Math.Abs(imagePoint.X - _startPoint.X);
|
||||||
|
int height = Math.Abs(imagePoint.Y - _startPoint.Y);
|
||||||
|
|
||||||
|
if (width > 10 && height > 10)
|
||||||
|
{
|
||||||
|
_detectionZone = new Rectangle(x, y, width, height);
|
||||||
|
_selectedZoneIndex = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_isDrawing = false;
|
||||||
|
_isMoving = false;
|
||||||
|
UpdateListBox();
|
||||||
|
picBoxCamera.Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (listBox1.SelectedIndex >= 0)
|
||||||
|
{
|
||||||
|
_selectedZoneIndex = listBox1.SelectedIndex;
|
||||||
|
picBoxCamera.Invalidate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ToolStripButton1_Click(object sender, EventArgs e)
|
private void ToolStripButton1_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
// 按钮1点击事件处理
|
SaveConfig();
|
||||||
MessageBox.Show("按钮1被点击");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ToolStripButton2_Click(object sender, EventArgs e)
|
private void ToolStripButton2_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
// 按钮2点击事件处理
|
if (picBoxCamera.Image != null)
|
||||||
MessageBox.Show("按钮2被点击");
|
{
|
||||||
|
_detectionZone = new Rectangle(10, 10, picBoxCamera.Image.Width - 20, picBoxCamera.Image.Height - 20);
|
||||||
|
_ledZone = new Rectangle(picBoxCamera.Image.Width - 60, 10, 50, 50);
|
||||||
|
_selectedZoneIndex = -1;
|
||||||
|
UpdateListBox();
|
||||||
|
picBoxCamera.Invalidate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 可以根据需要添加更多事件处理方法
|
private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -117,4 +117,7 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
</root>
|
</root>
|
||||||
@@ -28,17 +28,29 @@ namespace Test
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
if (this.components == null)
|
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||||
{
|
|
||||||
this.components = new System.ComponentModel.Container();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||||
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
|
this.button1 = new System.Windows.Forms.Button();
|
||||||
|
this.button2 = new System.Windows.Forms.Button();
|
||||||
|
this.tableLayoutPanel1.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.flowLayoutPanel1)).BeginInit();
|
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
|
// tableLayoutPanel1
|
||||||
|
//
|
||||||
|
this.tableLayoutPanel1.ColumnCount = 2;
|
||||||
|
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.tableLayoutPanel1.Controls.Add(this.button1, 0, 0);
|
||||||
|
this.tableLayoutPanel1.Controls.Add(this.button2, 1, 0);
|
||||||
|
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
|
||||||
|
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 443);
|
||||||
|
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||||
|
this.tableLayoutPanel1.RowCount = 1;
|
||||||
|
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.tableLayoutPanel1.Size = new System.Drawing.Size(804, 33);
|
||||||
|
this.tableLayoutPanel1.TabIndex = 1;
|
||||||
|
//
|
||||||
// pictureBox1
|
// pictureBox1
|
||||||
//
|
//
|
||||||
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
@@ -49,20 +61,12 @@ namespace Test
|
|||||||
this.pictureBox1.TabIndex = 0;
|
this.pictureBox1.TabIndex = 0;
|
||||||
this.pictureBox1.TabStop = false;
|
this.pictureBox1.TabStop = false;
|
||||||
//
|
//
|
||||||
// flowLayoutPanel1
|
|
||||||
//
|
|
||||||
this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
|
|
||||||
this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 443);
|
|
||||||
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
|
|
||||||
this.flowLayoutPanel1.Size = new System.Drawing.Size(804, 33);
|
|
||||||
this.flowLayoutPanel1.TabIndex = 1;
|
|
||||||
this.flowLayoutPanel1.FlowDirection = System.Windows.Forms.FlowDirection.LeftToRight;
|
|
||||||
//
|
|
||||||
// button1
|
// button1
|
||||||
//
|
//
|
||||||
this.button1 = new System.Windows.Forms.Button();
|
this.button1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.button1.Location = new System.Drawing.Point(3, 3);
|
||||||
this.button1.Name = "button1";
|
this.button1.Name = "button1";
|
||||||
this.button1.Size = new System.Drawing.Size(400, 33);
|
this.button1.Size = new System.Drawing.Size(394, 27);
|
||||||
this.button1.TabIndex = 0;
|
this.button1.TabIndex = 0;
|
||||||
this.button1.Text = "获取摄像头图像";
|
this.button1.Text = "获取摄像头图像";
|
||||||
this.button1.UseVisualStyleBackColor = true;
|
this.button1.UseVisualStyleBackColor = true;
|
||||||
@@ -70,9 +74,10 @@ namespace Test
|
|||||||
//
|
//
|
||||||
// button2
|
// button2
|
||||||
//
|
//
|
||||||
this.button2 = new System.Windows.Forms.Button();
|
this.button2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.button2.Location = new System.Drawing.Point(403, 3);
|
||||||
this.button2.Name = "button2";
|
this.button2.Name = "button2";
|
||||||
this.button2.Size = new System.Drawing.Size(400, 33);
|
this.button2.Size = new System.Drawing.Size(394, 27);
|
||||||
this.button2.TabIndex = 1;
|
this.button2.TabIndex = 1;
|
||||||
this.button2.Text = "设置";
|
this.button2.Text = "设置";
|
||||||
this.button2.UseVisualStyleBackColor = true;
|
this.button2.UseVisualStyleBackColor = true;
|
||||||
@@ -84,18 +89,19 @@ namespace Test
|
|||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(804, 476);
|
this.ClientSize = new System.Drawing.Size(804, 476);
|
||||||
this.Controls.Add(this.pictureBox1);
|
this.Controls.Add(this.pictureBox1);
|
||||||
this.Controls.Add(this.flowLayoutPanel1);
|
this.Controls.Add(this.tableLayoutPanel1);
|
||||||
this.Name = "Form1";
|
this.Name = "Form1";
|
||||||
this.Text = "摄像头图像获取";
|
this.Text = "摄像头图像获取";
|
||||||
|
this.Load += new System.EventHandler(Form1_Load);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.flowLayoutPanel1)).EndInit();
|
this.tableLayoutPanel1.ResumeLayout(false);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
|
||||||
private System.Windows.Forms.PictureBox pictureBox1;
|
private System.Windows.Forms.PictureBox pictureBox1;
|
||||||
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
|
|
||||||
private System.Windows.Forms.Button button1;
|
private System.Windows.Forms.Button button1;
|
||||||
private System.Windows.Forms.Button button2;
|
private System.Windows.Forms.Button button2;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,10 @@ namespace Test
|
|||||||
public Form1()
|
public Form1()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Form1_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
_camera = new Camera.Camera();
|
_camera = new Camera.Camera();
|
||||||
_camera.ImageCaptured += Camera_ImageCaptured;
|
_camera.ImageCaptured += Camera_ImageCaptured;
|
||||||
}
|
}
|
||||||
@@ -59,8 +62,7 @@ namespace Test
|
|||||||
|
|
||||||
private void button2_Click(object sender, EventArgs e)
|
private void button2_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Camera.Setting settingForm = new Camera.Setting();
|
_camera.SetArea();
|
||||||
settingForm.ShowDialog();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnFormClosing(FormClosingEventArgs e)
|
protected override void OnFormClosing(FormClosingEventArgs e)
|
||||||
|
|||||||
Reference in New Issue
Block a user