using System; using System.Configuration; using System.Data; using System.Drawing; using System.IO; using System.Net.NetworkInformation; using System.Reflection; using System.Windows.Forms; namespace PaintingPC { public partial class FrmChooseDamnPosition : Form { public string BarCode = ""; public static string DamnPosition = ""; //抛光位置 public static string Reason = ""; //原因 private int count = 0; //缺陷图选中个数 public FrmChooseDamnPosition(string barcode) { BarCode = barcode; InitializeComponent(); } private void FrmChooseDamnPosition_Load(object sender, EventArgs e) { DamnPosition = ""; Reason = ""; int row = 0, col = 0; string picture = ""; try { #region 缺陷原因 int drow = 0, dcol = 6; //行,列 DataTable dt3 = Function.SearchDefectInfo(ConfigurationManager.AppSettings["Station"].Trim()); if (dt3 != null && dt3.Rows.Count > 0) { drow = Convert.ToInt32(Math.Ceiling((double)dt3.Rows.Count / dcol)); Label[] dLb = new Label[7]; string[] dstr = new string[dt3.Rows.Count]; for (int i = 0; i < dt3.Rows.Count; i++) { dstr[i] = dt3.Rows[i]["DefectName"].ToString(); } for (int i = 0; i < dcol; i++) //列 { for (int j = 0; j < drow; j++) //行 { dLb[i] = new Label(); if ((i + dcol * j) < dstr.Length) { dLb[i].Text = dstr[i + dcol * j].ToString(); dLb[i].Font = new Font(dLb[i].Font.FontFamily, 24, FontStyle.Bold); dLb[i].Size = new Size(150, 50); dLb[i].Location = new Point(20 + i * (dLb[i].Size.Width + 15), 5 + j * (dLb[i].Size.Height + 20)); dLb[i].BorderStyle = BorderStyle.FixedSingle; dLb[i].BackColor = Color.Transparent; dLb[i].TextAlign = ContentAlignment.MiddleCenter; panel2.Controls.Add(dLb[i]); dLb[i].Click += new EventHandler(dLbRoom_Click); } } } } #endregion #region 加载图片 DataTable dt = Function.SearchInfoByBarCode(BarCode); if (dt != null && dt.Rows.Count > 0) { row = Convert.ToInt32(dt.Rows[0]["Rows"].ToString()); col = Convert.ToInt32(dt.Rows[0]["Cols"].ToString()); picture = dt.Rows[0]["PicturePath"].ToString(); } dt.Dispose(); //if (!File.Exists(Program.PicturePath + @"\" + "picture")) if (!File.Exists(System.IO.Directory.GetCurrentDirectory() + @"\" + picture)) { Ping p1 = new Ping(); bool status = false; PingReply reply = p1.Send(Program.IP); //发送主机名或Ip地址 if (reply.Status == IPStatus.Success) { string PictureFolder = ConfigurationManager.AppSettings["PictureFolder"].ToString(); string User = ConfigurationManager.AppSettings["User"].ToString(); string UserPwd = ConfigurationManager.AppSettings["UserPwd"].ToString(); status = Upload.DoConnComputer(Program.IP, PictureFolder, User, UserPwd); if (status == true) { //共享文件夹的目录 string path = ConfigurationManager.AppSettings["RemotePictureFolder"].ToString() + picture; DirectoryInfo theFolder = new DirectoryInfo(path); string filename = theFolder.ToString(); //执行方法 Function.TransportRemoteToLocal(filename, System.Environment.CurrentDirectory + "\\", picture); //实现将远程服务器文件写入到本地 } } } FileStream fs = new FileStream(System.Environment.CurrentDirectory + "\\" + picture, FileMode.Open, FileAccess.Read);//获取图片文件流 Image img = Image.FromStream(fs); // 文件流转换成Image格式 pictureBox2.Image = img; //给 图片框设置要显示的图片 fs.Close(); // 关闭流,释放图片资源 #endregion #region 缺陷图划分区域 Label[] lb = new Label[5]; string[] str = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }; for (int i = 0; i < col; i++) { for (int j = 0; j < row; j++) { lb[i] = new Label(); lb[i].Text = str[i + col * j].ToString(); lb[i].Font = new Font(lb[i].Font.FontFamily, 32, FontStyle.Bold); lb[i].Size = new Size(pictureBox2.Width / col, pictureBox2.Height / row); lb[i].Location = new Point(0 + i * lb[i].Size.Width, 0 + j * lb[i].Size.Height); lb[i].BorderStyle = BorderStyle.FixedSingle; lb[i].BackColor = Color.Transparent; lb[i].TextAlign = ContentAlignment.MiddleCenter; pictureBox2.Controls.Add(lb[i]); lb[i].Click += new EventHandler(lblRoom_Click); } } #endregion } catch (Exception ex) { LogHelper.WriteLogManager(ex); LogHelper.WriteErrLogBase(ex.ToString(), MethodBase.GetCurrentMethod().Name); } } /// /// 缺陷图点击 /// /// /// void lblRoom_Click(object sender, EventArgs e) { Label a = (Label)sender; string aa = a.Text; if (a.BackColor == Color.Transparent) { a.BackColor = Color.FromArgb(150, System.Drawing.Color.Chartreuse); count++; } else { a.BackColor = Color.Transparent; count--; } } /// /// 缺陷原因点击 /// /// /// void dLbRoom_Click(object sender, EventArgs e) { if (count == 0) { MessageBox.Show("请选择缺陷区域!"); return; } Label a = (Label)sender; string aa = a.Text; if (a.BackColor == Color.Transparent) { a.BackColor = Color.Chartreuse; } else { a.BackColor = Color.Transparent; } } /// /// 返回按钮 /// /// /// private void btnBack_Click(object sender, EventArgs e) { DamnPosition = ""; Reason = ""; this.Close(); } /// /// 保存按钮 /// /// /// private void btnSave_Click(object sender, EventArgs e) { DamnPosition = ""; Reason = ""; foreach (Control c in pictureBox2.Controls) { Label b = c as Label; if (b != null && b.BackColor != Color.Transparent) { DamnPosition += b.Text + ";"; } } foreach (Control c in panel2.Controls) { Label b = c as Label; if (b!= null && b.BackColor != Color.Transparent) { Reason += b.Text + ";"; } } if (!string.IsNullOrWhiteSpace(DamnPosition) && !string.IsNullOrWhiteSpace(Reason)) { this.Close(); } else { MessageBox.Show("必须点选缺陷位置和缺陷原因,如果不选请点击返回按钮"); } } } }