public void UpdateCameraStip(CameraTimeInfo cam) { if (cam.timeIntervals[cam.timeIntervals.Count - 1].endTime.Subtract(main.endTime).TotalMilliseconds > 0) { main.endTime = cam.timeIntervals[cam.timeIntervals.Count - 1].endTime.AddMinutes(2); } foreach (PictureBox pb in pnlTimeLine.Controls) { if (((CameraTimeInfo)pb.Tag).Equals(cam)) { Image img = pb.Image; using (Graphics g = Graphics.FromImage(img)) { // Draw horizontal line g.DrawLine(new Pen(Color.Black, 1), new Point(0, img.Height / 2), new Point(img.Width, img.Height / 2)); // Draw strip time periods foreach (TimeInterval ti in cam.timeIntervals) { Point startPoint = new Point((int)(((ti.startTime.Subtract(main.startTime).TotalSeconds) / (float)(main.endTime.Subtract(main.startTime)).TotalSeconds) * img.Width), img.Height / 4); Size size = new Size((int)(((ti.endTime.Subtract(ti.startTime).TotalSeconds) / (float)(main.endTime.Subtract(main.startTime).TotalSeconds)) * img.Width), img.Height / 2); g.FillRectangle(new SolidBrush(cam.color), new Rectangle(startPoint, size)); } } pb.Image = img; break; } } }
private void GenerateVideo() { Application.Idle -= ProcessFrame; MessageBox.Show("Generating Video"); List <Interval> I = new List <Interval>(); List <CameraTimeInfo> cams = track.cameraList; SQLManager sql = new SQLManager(); while (true) { int index = -1; bool check = true; CameraTimeInfo min = cams[0]; for (int i = 0; i < cams.Count; i++) { if (cams[i].timeIntervals.Count > 1) { index = i; min = cams[i]; break; } } if (index == -1) { break; } for (int i = 0; i < cams.Count; i++) { if (cams[i].timeIntervals.Count > 1) { if (cams[i].timeIntervals[0].startTime < min.timeIntervals[0].startTime) { min = cams[i]; index = i; } } } I.Add(new Interval(cams[index].cameraName, cams[index].timeIntervals[0].startTime, cams[index].timeIntervals[0].endTime)); cams[index].timeIntervals.RemoveAt(0); } string output = VideoGeneration.GenerateVideo(I); }
public void DrawCameraStrip(CameraTimeInfo cam) { if (cam.timeIntervals[cam.timeIntervals.Count - 1].endTime.Subtract(main.endTime).TotalMilliseconds > 0) { main.endTime = cam.timeIntervals[cam.timeIntervals.Count - 1].endTime.AddMinutes(2); } int heightOfstrip = 32; int widthOfstrip = 512; Bitmap img = new Bitmap(widthOfstrip, heightOfstrip); using (Graphics g = Graphics.FromImage(img)) { // Draw horizontal line g.DrawLine(new Pen(Color.Black, 1), new Point(0, img.Height / 2), new Point(img.Width, img.Height / 2)); // Draw strip time periods foreach (TimeInterval ti in cam.timeIntervals) { Point startPoint = new Point((int)(((ti.startTime.Subtract(main.startTime).TotalSeconds) / (float)(main.endTime.Subtract(main.startTime)).TotalSeconds) * img.Width), img.Height / 4); Size size = new Size((int)(((ti.endTime.Subtract(ti.startTime).TotalSeconds) / (float)(main.endTime.Subtract(main.startTime).TotalSeconds)) * img.Width), img.Height / 2); g.FillRectangle(new SolidBrush(cam.color), new Rectangle(startPoint, size)); } } // Add PictureBox PictureBox pb = new PictureBox(); pb.Size = new Size(widthOfstrip, heightOfstrip); pb.Dock = DockStyle.Bottom; pb.BackColor = Color.FromArgb(53, 66, 75); pb.Image = img; pb.SizeMode = PictureBoxSizeMode.StretchImage; pnlTimeLine.Controls.Add(pb); pb.MouseEnter += delegate(System.Object o, System.EventArgs e) { pb.BackColor = Color.FromArgb(43, 56, 65); }; pb.MouseLeave += delegate(System.Object o, System.EventArgs e) { pb.BackColor = Color.FromArgb(53, 66, 75); }; pb.Tag = cam; }