private void PlugIn_Instance_FeedImage(object sender, EventArgs e) { IPlugIn p = sender as IPlugIn; if (p == null || p.Enabled == false) { return; } IPlugInFeed f = sender as IPlugInFeed; if (f != null) { f.Image = null; Camera camera = cameraWindow.Camera; if (camera != null) { Bitmap lastFrame = camera.LastFrame; if (lastFrame != null) { Bitmap bmp = CameraBanner.Render(lastFrame, this.CameraClass.Name, false); f.Image = bmp; } } } }
private void ShowFrame(Graphics g, Bitmap bmp) { if (bmp == null) { return; } Rectangle rc = this.ClientRectangle; if (this.RegionEditing || this.ShowRegion) { this.CameraClass.CameraRegions.Bitmap = bmp; this.CameraClass.CameraRegions.ShowGrid = this.RegionEditing; bmp = this.CameraClass.CameraRegions.Render(); } if (this.mBanner) { bmp = CameraBanner.Render(bmp, this.CameraClass.Name, true); } g.DrawImage(bmp, rc.X + 1, rc.Y + 1, rc.Width - 2, rc.Height - 2); }
private void toolStripButtonSnag_Click(object sender, EventArgs e) { Bitmap b = this.cameraWindow.CurrentFrame; if (b != null) { CameraSnagForm f = new CameraSnagForm(); f.Camera = this.CameraClass; if (this.ShowBanner) { b = CameraBanner.Render(b, this.CameraClass.Name, false); } f.Bitmap = b; this.SnagCount++; f.Show(); } else { MessageBox.Show(Translator.Instance.T("当前窗口中尚无图像, 无法完成截图操作."), MotionPreference.Instance.MessageBoxCaption, MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
// On new frame private void camera_NewFrame(object sender, System.EventArgs e) { this.mHasFrame = true; if (this.EditMode == true || this.CameraClass == null || (this.CameraClass.Capture == CAPTUREFLAG.NOCAPTURE)) { return; } mMutexCapture.WaitOne(); if ((this.mIntervalsToSave > 0) || (this.CameraClass.Capture == CAPTUREFLAG.ALWAYS)) { // lets save the frame if (mAVIWriter == null && MotionConfiguration.Instance.StorageIsValid) { // create file name Motion.Core.DateTimeEx date = new Motion.Core.DateTimeEx(); String fileName = String.Format("{0}.{1}.{2}.avi", this.CameraClass.ID, (int)RecordMark.INVALID, date.TimeStamp); try { // create AVI writer mAVIWriter = new AVIWriterEx(this.CameraClass.Codec); // open AVI file mAVIWriter.Open(MotionConfiguration.Instance.StorageAVI + @"\" + fileName, cameraWindow.Camera.Width, cameraWindow.Camera.Height); DateTime n = DateTime.Now; string s = "" + n.Hour + ":" + n.Minute + ":" + n.Second; this.toolStripStatusLabelCapture.Text = string.Format(Translator.Instance.T("录像开始 ({0})"), s); this.CameraClass.Capturing = true; this.OnCameraViewRecordStarted(new CameraViewCaptureEventArgs(this)); mCaptureElapse = date.TimeStamp; } catch (Exception) { if (mAVIWriter != null) { mAVIWriter.Dispose(); mAVIWriter = null; } this.toolStripStatusLabelCapture.Text = Translator.Instance.T("录像失败"); this.CameraClass.Capturing = false; this.mCaptureElapse = 0; mMutexCapture.ReleaseMutex(); return; } } Camera camera = cameraWindow.Camera; if (camera != null && mAVIWriter != null) { Bitmap b = camera.LastFrame; if (b != null) { try { if (this.ShowBanner) { Bitmap bmp = CameraBanner.Render(b, this.CameraClass.Name, true); mAVIWriter.AddFrame(bmp); } else { mAVIWriter.AddFrame(b); } } catch (Exception) { this.toolStripStatusLabelCapture.Text = Translator.Instance.T("录像失败"); //OnCameraViewLog(new CameraViewLogEventArgs(Motion.Core.LogLevel.LOG_ERROR, ex.Message, this)); //MessageBox.Show(ex.Message + "\n" + ex.StackTrace.ToString(), this.Camera.Name); } } } } mMutexCapture.ReleaseMutex(); }