using?System.Collections.Generic;
using?System.ComponentModel;
using?System.Data;
using?System.Drawing;
using?System.Drawing.Imaging;
using?System.Text;
using?System.Windows.Forms;
using?System.Threading;
using?AForge;
using?AForge.Video;
using?AForge.Video.DirectShow;
using?AForge.Imaging;
using?AForge.Imaging.Filters;
using?System.IO;
namespace?Camera
{
public?partial?class?Form1?:?Form
{
private?FilterInfoCollection?videoDevices;
public?VideoCaptureDevice?videoSource;?
private?int?flag?=?1;
private?string?dirc?=?System.AppDomain.CurrentDomain.BaseDirectory?+?"JPG";?//截圖保存的目錄?
public?Form1()
{
InitializeComponent();
}
private?void?Form1_Load(object?sender,?EventArgs?e)
{
if?(!Directory.Exists(dirc))
Directory.CreateDirectory(dirc);?
try
{
//?枚舉所有視頻輸入設備
videoDevices?=?new?FilterInfoCollection(FilterCategory.VideoInputDevice);
if?(videoDevices.Count?==?0)
throw?new?ApplicationException();
foreach?(FilterInfo?device?in?videoDevices)
{
tscbxCameras.Items.Add(device.Name);
}
tscbxCameras.SelectedIndex?=?0;
}
catch?(ApplicationException)
{
tscbxCameras.Items.Add("No?local?capture?devices");
videoDevices?=?null;
}
}
private?void?toolStripButton1_Click(object?sender,?EventArgs?e)
{
CameraConn();
}
private?void?CameraConn()
{//妳這裏重新定義了壹個對象,所以出錯
videoSource?=?new?VideoCaptureDevice(videoDevices[tscbxCameras.SelectedIndex].MonikerString);
videoSource.DesiredFrameSize?=?new?Size(320,?240);
videoSource.DesiredFrameRate?=?1;
videPlayer.VideoSource?=?videoSource;
videPlayer.Start();
}
private?void?toolStripButton2_Click(object?sender,?EventArgs?e)
{
videPlayer.SignalToStop();
videPlayer.WaitForStop();
}
private?void?Form1_FormClosing(object?sender,?FormClosingEventArgs?e)
{
toolStripButton2_Click(null,?null);
}
private?void?toolStripButton3_Click(object?sender,?EventArgs?e)
{
//不懂截圖,但還是給妳簡單完善了下
flag?=?0;
if?(videoSource?==?null)
{
MessageBox.Show("請先連接攝像頭");
}
else?if?(!videoSource.IsRunning)
{
MessageBox.Show("攝像頭已經關閉,請重新打開");
}
else
{
videoSource.NewFrame?+=?new?NewFrameEventHandler(video_NewFrame);
}
}
private?void?video_NewFrame(object?sender,?NewFrameEventArgs?eventArgs)
{
Bitmap?bitmap?=?(Bitmap)eventArgs.Frame.Clone();
if?(flag?==?0)
{
string?img?=?dirc?+?"/"?+?DateTime.Now.ToString("yyyyMMddhhmmss")?+?".jpg";
bitmap.Save(img);
flag?=?1;
}
}?
}
}