示例#1
0
        public void ImageWriter()
        {
            int frameCount = 0;

            while (true)
            {
                if (Flagged)
                {
                    _flagId++;
                    System.IO.Directory.CreateDirectory(@"D:\flagged\" + _flagId);
                    CapturedImage[] imageArray = ImageQueue.ToArray();
                    for (int i = 0; i < imageArray.Length; i++)
                    {
                        CapturedImage image    = imageArray[i];
                        string        filePath = string.Format(@"D:\flagged\{0}\{1}.png", _flagId, i.ToString().PadLeft(5, '0'));
                        image.Save(filePath);
                    }
                    Flagged = false;
                }
                //keep the last 100 images in the buffer
                if (ImageQueue.Count > 100)
                {
                    if (globCaptureStart == DateTime.MinValue)
                    {
                        globCaptureStart = DateTime.Now;
                    }
                    CapturedImage image = ImageQueue.Peek();
                    if (Recording)
                    {
                        image.Save("D:\\captures\\" + frameCount.ToString().PadLeft(5, '0') + ".png");
                        frameCount++;
                    }
                    ImageQueue.Dequeue();
                    image.Dispose();
                }
                Thread.Sleep(1);
            }
        }