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 lc = new List(); private void LoadVoice(List 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(); } } /// /// 传入了值,则按传入的路径及Ip进行截图,否则则全部截图 /// /// /// 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 lt = PbCache.videoChild; List lp = new List(); 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 { } } } }