| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- using CarMeterSystem.OptionCls;
- using Common;
- using MeterPlugInLibrary;
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.IO;
- using System.Linq;
- using System.Runtime.InteropServices;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace CarMeterSystem
- {
- public partial class frmVoice : Form
- {
- public frmVoice()
- {
- InitializeComponent();
- }
- List<CamerEs> lc = new List<CamerEs>();
- private void LoadVoice(List<loginParam> lt)
- {
- int i = 1;
- foreach (loginParam lp in lt)
- {
- //最多载入4个摄像头,因为这边截图最多4摄像头带1屏幕图
- if (i > 4) break;
- CamerEs c = new CamerEs(lp);
- PictureBox pb = new PictureBox();
- pb.Name = $"pb{i++}";
- pb.Width = AppConfigCache.imgWidth;
- pb.Height = Convert.ToInt32(AppConfigCache.imgWidth / 1.8);
- //pb.BackColor = Color.Black;
- pb.Dock = DockStyle.Top;
- flowLayoutPanel1.Controls.Add(pb);
- c.Login(pb);
- lc.Add(c);
- }
- }
- public void LogOut()
- {
- foreach (CamerEs lp in lc)
- {
- lp.LoginOut();
- }
- }
- /// <summary>
- /// 传入了值,则按传入的路径及Ip进行截图,否则则全部截图
- /// </summary>
- /// <param name="imgUrl"></param>
- /// <param name="ip"></param>
- public void CapturePictrue(string actualFirstNo,Form fm, string imgUrl = default, string ip = default)
- {
- //*
- this.TopMost = true;
- Thread.Sleep(1000);
- //*
- int i = 1;
- foreach (Control cn in flowLayoutPanel1.Controls)
- {
- if (cn.Name.Contains("pb"))
- {
- //截屏的方式只截取第一个摄像头的图片
- if (i == 1)
- {
- PictureBox pb = (PictureBox)cn;
- Bitmap bit = new Bitmap(800, 450);//实例化一个和窗体一样大的bitmap
- Graphics g = Graphics.FromImage(bit);
- g.CompositingQuality = CompositingQuality.HighQuality;//质量设为最高 HighQuality
- g.CopyFromScreen(pb.Left, pb.Top, 0, 0, new Size(800, 450));//保存整个窗体为图片
- bit.Save($"{PbCache.path}/imgShort/formalImg/{PbCache.sportInfo.baseSpotNo}_C{actualFirstNo}_{i}.jpg");//默认保存格式为PNG,保存成jpg格式质量不是很好
- bit.Dispose();
- this.TopMost = false;
- fm.TopMost = true;
- }
- else
- {
- //_ = BeginInvoke(new Action(() => {
- // lc[i - 1].CapturePictrue($"{PbCache.path}/imgShort/formalImg/{PbCache.sportInfo.baseSpotNo}_C{actualFirstNo}_{i}.jpg");
- //}));
- lc[i - 1].CapturePictrue2($"{PbCache.path}/imgShort/formalImg/{PbCache.sportInfo.baseSpotNo}_C{actualFirstNo}_{i}.jpg");
- }
- if (i < flowLayoutPanel1.Controls.Count) i++;
- }
- }
- //*/
- }
- internal void LoadVoiceInfo()
- {
- List<MeterBaseVideoChild> lt = PbCache.videoChild;
- List<loginParam> lp = new List<loginParam>();
- foreach (MeterBaseVideoChild t in lt)
- {
- lp.Add(new loginParam { ip = t.p_ip, port = int.Parse(t.vdo_port), userId = t.vdo_user, pwd = t.vdo_pwd });
- }
- LoadVoice(lp);
- //this.Hide();
- }
- private void frmVoice_FormClosing(object sender, FormClosingEventArgs e)
- {
- try
- {
- LogOut();
- }
- catch { }
- }
- }
- }
|