コード例 #1
0
        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;
                    }
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        // 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();
        }