using System;
using System.Collections.Generic;
using System.Drawing;
using SharpCamera;
using System.Windows.Forms;
namespace SharpCameraDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
#region 变量
private Camera camera2 = null;
private Camera camera1 = null;
private CameraMgr cameraMgr = null;
#endregion
#region 事件
private void Form2_Load(object sender, EventArgs e)
{
//在调用SharpCamera类库其他任何类和方法之前,必须先调用本方法设置授权Key,如果是试用,则传入Test即可。
//试用版有时间限制,只能运行十分钟,之后会被加水印,正式授权请访问: http://sharpcamera.zzsgzn.com/?MultiCameraDemo
KeyMgr.SetKey("Test");
//实例化一个CameraMgr
cameraMgr = new CameraMgr();
//得到当前计算机的所有已安装摄像头
List<string> lstCameraNameInstalled = cameraMgr.GetCameraNameList();
if(lstCameraNameInstalled.Count < 2)
{
throw new Exception("您的计算机上已安装的UVC摄像头少于2个,本程序无法正常运行!");
}
#region 初始化摄像头1
//选定该摄像头,摄像头索引为0,您也可以用摄像头名称的方式来选定
camera1 = cameraMgr.ChooseCamera(0);
//订阅帧图片上报的事件
camera1.OnVideoFrameCaptrue += VideoFrameCaptrue1;
//打开该摄像头
camera1.Open();
//修改当前分辨率
camera1.Resolution = camera1.AllSupportedResolution[0];
#endregion
#region 初始化摄像头2
//选定该摄像头,这里摄像头索引为1
camera2 = cameraMgr.ChooseCamera(1);
//订阅帧图片上报的事件
camera2.OnVideoFrameCaptrue += VideoFrameCaptrue2;
//打开该摄像头
camera2.Open();
//修改当前分辨率
camera2.Resolution = camera2.AllSupportedResolution[0];
#endregion
}
public void VideoFrameCaptrue1(Bitmap img)
{
Bitmap temp = ((Bitmap)img).Clone(new Rectangle(0, 0, img.Width, img.Height), img.PixelFormat);
if (this.InvokeRequired)
{
this.pictureBox1.BeginInvoke(new MethodInvoker(delegate ()
{
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
pictureBox1.Image = null;
}
this.pictureBox1.Image = temp;
}));
}
else
{
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();
pictureBox1.Image = null;
}
this.pictureBox1.Image = temp;
}
}
public void VideoFrameCaptrue2(Bitmap img)
{
Bitmap temp = ((Bitmap)img).Clone(new Rectangle(0, 0, img.Width, img.Height), img.PixelFormat);
if (this.InvokeRequired)
{
this.pictureBox2.BeginInvoke(new MethodInvoker(delegate ()
{
if (pictureBox2.Image != null)
{
pictureBox2.Image.Dispose();
pictureBox2.Image = null;
}
this.pictureBox2.Image = temp;
}));
}
else
{
if (pictureBox2.Image != null)
{
pictureBox2.Image.Dispose();
pictureBox2.Image = null;
}
this.pictureBox2.Image = temp;
}
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
//退出时释放资源
if (camera1 != null)
{
camera1.Close();
camera1.Dispose();
camera1 = null;
}
if (camera2 != null)
{
camera2.Close();
camera2.Dispose();
camera2 = null;
}
if (cameraMgr != null)
{
cameraMgr.Dispose();
cameraMgr = null;
}
}
#endregion
#region 属性设置面板
private void Button1_Click(object sender, EventArgs e)
{
if (camera1 != null)
{
//显示设置对话框
camera1.ShowPropertyPage();
}
}
private void Button2_Click(object sender, EventArgs e)
{
if (camera2 != null)
{
//显示设置对话框
camera2.ShowPropertyPage();
}
}
#endregion
#region 版权
private void button5_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://sharpcamera.zzsgzn.com/?MultiCameraDemo");
}
private void button4_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://www.zzsgzn.com/?MultiCameraDemo");
}
private void button3_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start("http://wpa.qq.com/msgrd?v=3&uin=3535600244&site=qq&menu=yes");
}
#endregion
#region 亮度
private void btnBrightness1_Click(object sender, EventArgs e)
{
if (camera1 != null)
{
//获取亮度的属性对象
CameraProperty brightnessPro = camera1.Brightness;
//调整其值到最大值,也可以指定为其他合法值
brightnessPro.Current = brightnessPro.Max;
}
}
private void btnBrightness2_Click(object sender, EventArgs e)
{
if (camera1 != null)
{
//获取亮度的属性对象
CameraProperty brightnessPro = camera1.Brightness;
//调整其值到最小值,也可以指定为其他合法值
brightnessPro.Current = brightnessPro.Min;
}
}
private void btnBrightness3_Click(object sender, EventArgs e)
{
if (camera1 != null)
{
//获取亮度的属性对象
CameraProperty brightnessPro = camera1.Brightness;
//调整其值到默认值,也可以指定为其他合法值
brightnessPro.Current = brightnessPro.Default;
}
}
//下边为第二个摄像头的亮度控制
private void Button11_Click(object sender, EventArgs e)
{
if (camera2 != null)
{
//获取亮度的属性对象
CameraProperty brightnessPro = camera2.Brightness;
//调整其值到最大值,也可以指定为其他合法值
brightnessPro.Current = brightnessPro.Max;
}
}
private void Button12_Click(object sender, EventArgs e)
{
if (camera2 != null)
{
//获取亮度的属性对象
CameraProperty brightnessPro = camera2.Brightness;
//调整其值到最小值,也可以指定为其他合法值
brightnessPro.Current = brightnessPro.Min;
}
}
private void Button21_Click(object sender, EventArgs e)
{
if (camera2 != null)
{
//获取亮度的属性对象
CameraProperty brightnessPro = camera2.Brightness;
//调整其值到默认值,也可以指定为其他合法值
brightnessPro.Current = brightnessPro.Default;
}
}
#endregion
}
}