private void MoveJLBItem_Click(object sender, EventArgs e) { try { var isLock = DBEntityFinder.Instance.VerifyLTTID(detail_fid); if (!isLock) { PublicMethod.Instance.AlertDialog("详图没有被工单锁定,不能迁移计量表!"); Show(); return; } var movept = dddMap.screen2geo(mouseLocation.X, mouseLocation.Y); var detail = DBManager.Instance.GetEntities <Detailreference_n>( o => o.G3E_FID == detail_fid && o.EntityState != EntityState.Delete).FirstOrDefault(); if (detail != null) { if (detail.G3E_DETAILID == null) { return; } var tt = new JLBMove((long)detail.G3E_DETAILID, movept); var res = Application.ShowModalDialog(tt); if (res == DialogResult.OK) { // 加一个计量表,刷新窗口 var pb = new JlbPB(); pb.Height = picWheight; pb.Width = picWwidth; pb.Location = new System.Drawing.Point((int)mouseLocation.X - picWwidth / 2, (int)mouseLocation.Y - picWheight / 2); if (tt.SBLX == "高供高计") { pb.Image = imageList1.Images[0]; } else { pb.Image = imageList1.Images[1]; } pb.Tag = tt.g3e_Fid; pb.ContextMenuStrip = contextMenuStrip2; pb.JlbPBPosition = new Point3d(movept[1], movept[0], 0); pb.JlbPBFid = tt.g3e_Fid; pb.JlbSBLX = tt.SBLX; pb.SizeMode = PictureBoxSizeMode.StretchImage; pb.MouseDoubleClick += pb_MouseDoubleClick; pb.MouseDown += pb_MouseDown; pb.MouseHover += pb_MouseHover; pb.MouseUp += pb_MouseUp; pb.MouseMove += pb_MouseMove; pbs.Add(pb); Controls.Add(pb); } } } catch (Exception ex) { LogManager.Instance.Error(ex); } }
private void AddJLBItem_Click(object sender, EventArgs e) { try { if (DBEntityFinder.Instance.VerifyLTTID(detail_fid) == false) { PublicMethod.Instance.AlertDialog("设备没有被工单锁定,不能新增计量表!"); Show(); return; } var mi = sender as ToolStripMenuItem; if (mi != null) { var tshbgeo = dddMap.screen2geo(mouseLocation.X, mouseLocation.Y); var isLock = DBEntityFinder.Instance.VerifyLTTID(detail_fid); var tt = new JLBEditer(formType.regionAdd, detail_fid, tshbgeo, isLock) { Tag = mi.Text }; if (DialogResult.OK == tt.ShowDialog()) { // 加一个计量表,刷新窗口 var pb = new JlbPB(); pb.Height = picWheight; pb.Width = picWwidth; pb.Location = new System.Drawing.Point((int)mouseLocation.X - picWwidth / 2, (int)mouseLocation.Y - picWheight / 2); if (tt.SBLX == "高供高计") { pb.Image = imageList1.Images[0]; } else { pb.Image = imageList1.Images[1]; } pb.Tag = tt.g_newFid; pb.ContextMenuStrip = contextMenuStrip2; pb.JlbPBPosition = new Point3d(tshbgeo[1], tshbgeo[0], 0); pb.JlbPBFid = tt.g_newFid; pb.JlbSBLX = tt.SBLX; pb.SizeMode = PictureBoxSizeMode.StretchImage; pb.MouseDoubleClick += pb_MouseDoubleClick; pb.MouseDown += pb_MouseDown; pb.MouseHover += pb_MouseHover; pb.MouseUp += pb_MouseUp; pb.MouseMove += pb_MouseMove; pbs.Add(pb); Controls.Add(pb); } } } catch (Exception ex) { PublicMethod.Instance.AlertDialog(ex.Message); } }
private void JLBMap_Load(object sender, EventArgs e) { bMove = false; double min_x = 0; double min_y = 0; double max_x = 0; double max_y = 0; #region 计算出它的外围矩形。 var jlbs = GetJLB_NS(); if (jlbs != null) { pdjlbs = jlbs.ToList(); List <double> allx = new List <double>(); List <double> ally = new List <double>(); foreach (var jlb in jlbs) { var jlb1 = jlb; var shbsdo = DBManager.Instance.GetEntities <Gg_jx_jlb_pt_sdogeom>( o => jlb1 != null && (o.G3E_FID == jlb1.G3E_FID && o.EntityState != EntityState.Delete)) .FirstOrDefault(); if (shbsdo == null) { PublicMethod.Instance.ShowMessage("没有设备 " + jlb1.G3E_FID + " 对应的坐标数据,请联系数据管理人员。\n"); continue; } var multipoint = shbsdo.G3E_GEOMETRY as Multipoint; if (multipoint == null) { continue; } var pt = new Point3d(multipoint.Points[0].X, multipoint.Points[0].Y, 0); allx.Add(pt.X); ally.Add(pt.Y); } if (allx.Count > 0) { min_x = allx.Min(); max_x = allx.Max(); } if (ally.Count > 0) { min_y = ally.Min(); max_y = ally.Max(); } } //2 当没有没有设备时候,以沿布图坐标为中心点,上下加减250米 Multipoint vcbxpoint; if (detail_fno == 148) { var vcbx = DBManager.Instance.GetEntities <Gg_pd_zfbyq_pt_sdogeom>(o => o.G3E_FID == detail_fid).First(); vcbxpoint = vcbx.G3E_GEOMETRY as Multipoint; } else { var vcbx = DBManager.Instance.GetEntities <Gg_pd_cjlg_pt_sdogeom>(o => o.G3E_FID == detail_fid).First(); vcbxpoint = vcbx.G3E_GEOMETRY as Multipoint; } double dx = 5 / DMap.DD; double dy = dx; if (min_x == 0 || max_x == 0 || min_y == 0 || max_x == 0) { //vcbxpoint = vcbx.G3E_GEOMETRY as Multipoint; if (vcbxpoint != null) { min_y = vcbxpoint.Points[0].Y - dy; min_x = vcbxpoint.Points[0].X - dy; max_y = vcbxpoint.Points[0].Y + dy; max_x = vcbxpoint.Points[0].X + dy; } } if ((max_x - min_x) / (max_y - min_y) > 3) { min_y = max_y - (max_x - min_x); } else if ((max_y - min_y) / (max_x - min_x) > 3) { max_x = min_x + (max_y - min_y); } if (min_x == max_x) // 当设备只有一个,或者成一直线时 { min_x -= dx; max_x += dx; } else // 放大 { var t = (max_x - min_x) / 4; min_x -= t; max_x += t; } if (min_y == max_y) { min_y -= dy; max_y += dy; } else { var t = (max_y - min_y) / 4; min_y -= t; max_y += t; } #endregion wWidth = this.ClientSize.Width; wHeight = this.ClientSize.Height; dddMap.createDmap(min_x, max_x, min_y, max_y, wWidth, wHeight); if (jlbs != null) { pdjlbs = jlbs.ToList(); } List <int> xindex = new List <int>(); List <int> yindex = new List <int>(); foreach (var shb in pdjlbs) { var pt = GetPtFromGg_jx_jlb_pt_sdogeom(shb.G3E_FID); double[] xy = dddMap.geo2screen(pt.Y, pt.X); xindex.Add((int)xy[0]); yindex.Add((int)xy[0]); } int xcount = 0, ycount = 0; int i = 0; for (i = 0; i < xindex.Count - 1; i++) { if (Math.Floor((double)(xindex[i] - xindex[i + 1])) < 8) { xcount++; } } if (xindex.Count >= 2) { if (Math.Floor((double)(xindex[i - 1] - xindex[i])) < 8) { xcount++; } } for (i = 0; i < yindex.Count - 1; i++) { if (Math.Floor((double)(yindex[i] - yindex[i + 1])) < 10) { ycount++; } } if (yindex.Count >= 2) { if (Math.Floor((double)(yindex[i - 1] - yindex[i])) < 10) { ycount++; } } if (xcount > wWidth / 16) { xcount = (int)(wWidth * 0.75 / xcount); } else { xcount = 16; } if (ycount > wHeight / 16) { ycount = (int)(wHeight * 0.75 / ycount); } else { ycount = 16; } picMapWidth = ((double)xcount / wWidth) * (dddMap.ScreenMapMaxX - dddMap.ScreenMapMinX); picMapHeight = (double)ycount / wHeight * (dddMap.ScreenMapMaxY - dddMap.ScreenMapMinY_In); picWwidth = (int)(picMapWidth / (dddMap.ScreenMapMaxX - dddMap.ScreenMapMinX) * wWidth); picWheight = (int)(picMapHeight / (dddMap.ScreenMapMaxY - dddMap.ScreenMapMinY_In) * wHeight); #region 初始化低压户表 foreach (var jlb in pdjlbs) { var pt = GetPtFromGg_jx_jlb_pt_sdogeom(jlb.G3E_FID); double[] xy = dddMap.geo2screen(pt.Y, pt.X); var pb = new JlbPB(); pb.Height = picWheight; pb.Width = picWwidth; pb.Location = new System.Drawing.Point((int)xy[0] - xcount / 2, (int)xy[1] - ycount / 2); pb.Image = imageList1.Images[0]; if (jlb.CD_SBLX == "高供高计") { pb.Image = imageList1.Images[0]; if (search_fid == jlb.G3E_FID) { pb.Image = imageList1.Images[2]; } } else { pb.Image = imageList1.Images[1]; if (search_fid == jlb.G3E_FID) { pb.Image = imageList1.Images[3]; } } pb.Tag = jlb.G3E_FID; pb.ContextMenuStrip = contextMenuStrip2; pb.JlbPBPosition = pt; pb.JlbPBFid = jlb.G3E_FID; pb.JlbSBLX = jlb.CD_SBLX; pb.SizeMode = PictureBoxSizeMode.StretchImage; pb.MouseDoubleClick += pb_MouseDoubleClick; pb.MouseDown += pb_MouseDown; pb.MouseHover += pb_MouseHover; pb.MouseUp += pb_MouseUp; pb.MouseMove += pb_MouseMove; pbs.Add(pb); Controls.Add(pb); } #endregion drawBackImg(); }