Browse Source

Merge branch 'Release2.3' of http://36.129.163.148:10080/gaoshipeng/OTS2_0 into Release2.3

gsp 3 years ago
parent
commit
918047d252

BIN
Bin/x64/Debug/Resources/ReportTemplate/group1.rmf


+ 5 - 5
OTSIncAMeasureApp/7-OTSProgMgrInfo/ProgMgrInfoForm.cs

@@ -1699,11 +1699,11 @@ namespace OTSMeasureApp
 
             //加载相关参数信息
             //StageLoad();
-            LoadSEMStageData();
-            LoadImageScanPrm();
-            LoadCGenParam();
-            LoadImageProc();
-            LoadXRayParam();
+            //LoadSEMStageData();
+            //LoadImageScanPrm();
+            //LoadCGenParam();
+            //LoadImageProc();
+            //LoadXRayParam();
         }
         /// <summary>
         /// 通过id设置当前正在工作的样品台

+ 106 - 56
OTSIncAReportApp/1-UI/Control_Grids/ParticlesGridDevidePage.cs

@@ -1445,12 +1445,31 @@ namespace OTSIncAReportGrids
         /// <summary>
         /// 在帧图上标记颗粒的位置矩形,并保存到FIELD_FILES_MARK文件夹中
         /// </summary>
-        public void SaveMarkParticleRectangleOnFieldFile(DataTable dataTable)
+        public void SaveMarkParticleRectangleOnFieldFile(DataTable dataTable ,out List<string> vs , out DataTable dt_FIeld)
         {
+            List<string> maxlength = new List<string>();
+            for (int i=0;i< dataTable.Rows.Count;i++)
+            {
+                if (dataTable.Rows[i]["TypeName"].ToString()!= "Not Identified")
+                {
+                    if (maxlength.Count<10)
+                    {
+                        maxlength.Add(dataTable.Rows[i]["Fieldid"].ToString());
+                    }
+                    else
+                    {
+                        break;
+                    }
+                }
+            }
+            List<string> max_list = maxlength.Distinct().ToList();
+
             string str_path_FIELD_FILES = result.FilePath + "\\FIELD_FILES\\";
             string str_path_FIELD_FILES_MARK = result.FilePath + "\\FIELD_FILES_MARK\\";
             int intQuantity = 0;
-
+            //List<string> vs = new List<string>();
+            dt_FIeld = new DataTable();
+            vs = new List<string>();
             ////判断是否已经有导出过的标记帧图文件夹,如果已经存在,则直接返回不输出,先不加
             DirectoryInfo theFolder_FieldMark = new DirectoryInfo(str_path_FIELD_FILES_MARK);
             if (!theFolder_FieldMark.Exists)
@@ -1474,74 +1493,105 @@ namespace OTSIncAReportGrids
             DirectoryInfo theFolder = new DirectoryInfo(str_path_FIELD_FILES);
             if (theFolder.Exists)
             {
-
-                //循环帧图,再循环各帧图中的颗粒,进行标记,保存
-                foreach (FileInfo nextifile in theFolder.GetFiles())
+                DataTable dt = new DataTable();
+                dt.Columns.Add("fieldid");
+                dt.Columns.Add("id");
+                dt.Columns.Add("fieldName");
+                dt.Columns.Add("cunt",typeof(int));
+                dt.Columns.Add("fieldFullName");
+                for (int i = 0; i < max_list.Count; i++)
                 {
-                    //找出所有的用户库文件,在这个目录中
-                    if (nextifile.Name.Contains(".bmp") == true || nextifile.Name.Contains(".BMP") == true)
+                    foreach (FileInfo nextifile in theFolder.GetFiles())
                     {
-                        //确认对应的帧图名
-                        string str_fieldid = Path.GetFileNameWithoutExtension(nextifile.Name);
-                        str_fieldid = str_fieldid.Substring(5, str_fieldid.Length - 5);//减去field字符长度
+                        if (nextifile.Name.Contains(".bmp") == true || nextifile.Name.Contains(".BMP") == true)
+                        {
+                            //确认对应的帧图名
+                            string str_fieldid = Path.GetFileNameWithoutExtension(nextifile.Name);
+                            str_fieldid = str_fieldid.Substring(5, str_fieldid.Length - 5);//减去field字符长度
+                            bool bl = false;
 
-                        if (intQuantity > 10)
-                            continue;
+                            if (str_fieldid == max_list[i].ToString())
+                            {
+                                bl = true;
+                            }
 
-                        if (dataTable.Select(" fieldid = " + str_fieldid).Count() > 0)
-                        {
-                            Image img = Image.FromFile(nextifile.FullName);
-                            Bitmap ls_fieldbp = new Bitmap(img.Width, img.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
-                            using (Graphics g = Graphics.FromImage(ls_fieldbp))
+                            if (bl)
                             {
-                                g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
-                                g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
-                                g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
-                                g.DrawImage(img, 0, 0);
+                                DataRow dr = dt.NewRow();
+                                dr["fieldid"] = " fieldid = " + str_fieldid;
+                                dr["cunt"] = dataTable.Select(" fieldid = " + str_fieldid).Count();
+                                dr["fieldName"] = nextifile.Name;
+                                dr["fieldFullName"] = nextifile.FullName;
+                                dr["id"] = str_fieldid;
+                                dt.Rows.Add(dr);
                             }
 
-                            img.Dispose();
-                            img = null;
+                        }
+                    }
+                }
+                //DataView dv = dt.DefaultView;
+                //dv.Sort = "cunt DESC";
+                dt_FIeld = dt.Copy();
 
-                            //循环将颗粒,进行标记到bitmap图上
-                            DataRow[] drlist = dt_AllParticle.Select("  fieldid = " + str_fieldid);
-                            if (drlist.Count() > 0)
-                                intQuantity = intQuantity + 1;
-                            for (int i_row = 0; i_row < drlist.Count(); i_row++)
-                            {
-                                //string str_fieldid = drlist[i_row]["fieldid"].ToString();
-                                string str_particleid = drlist[i_row]["particleid"].ToString();
-                                string str_stdtypeid = drlist[i_row]["typeid"].ToString();
-                                string str_offset_rect_X = drlist[i_row]["RectLeft"].ToString();
-                                string str_offset_rect_Y = drlist[i_row]["RectTop"].ToString();
-                                string str_offset_rect_Width = drlist[i_row]["RectWidth"].ToString();
-                                string str_offset_rect_Height = drlist[i_row]["RectHeight"].ToString();
-
-                                //确定需要标记颗粒的定位
-                                Rectangle offset_rect = new Rectangle(Convert.ToInt32(str_offset_rect_X), Convert.ToInt32(str_offset_rect_Y),
-                        Convert.ToInt32(str_offset_rect_Width), Convert.ToInt32(str_offset_rect_Height));
-
-                                //向帧图进行标记颗粒位置
-                                Graphics g = Graphics.FromImage(ls_fieldbp);
-                                g.DrawRectangle(new Pen(Color.Aquamarine), offset_rect);
-
-                                //判断是否超出了图像外面,是的话,让文字在左侧显示,默认在右侧显示
-                                int ls_offsetx = offset_rect.X + offset_rect.Width;
-                                if (ls_offsetx > ls_fieldbp.Width - 10)
-                                {
-                                    ls_offsetx = offset_rect.X - 10;
-                                }
-                                g.DrawString(str_fieldid + "" + str_particleid.ToString(),
-                                    new Font("黑体", 8), new SolidBrush(Color.Aqua), new PointF(ls_offsetx, offset_rect.Y));
+                for (int i=0;i< dt_FIeld.Rows.Count; i++)
+                {
+                    if (dataTable.Select(dt_FIeld.Rows[i]["fieldid"].ToString()).Count() > 0)
+                    {
+                        vs.Add(dt_FIeld.Rows[i]["id"].ToString());
 
-                                //保存带有标记的帧图
-                                ls_fieldbp.Save(str_path_FIELD_FILES_MARK + str_fieldid.ToString() + ".bmp");
+                        Image img = Image.FromFile(dt_FIeld.Rows[i]["fieldFullName"].ToString());
+                        Bitmap ls_fieldbp = new Bitmap(img.Width, img.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
+                        using (Graphics g = Graphics.FromImage(ls_fieldbp))
+                        {
+                            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
+                            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
+                            g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
+                            g.DrawImage(img, 0, 0);
+                        }
 
-                                //ls_fieldbp.Dispose();
+                        img.Dispose();
+                        img = null;
+
+                        //循环将颗粒,进行标记到bitmap图上
+                        DataRow[] drlist = dt_AllParticle.Select(dt_FIeld.Rows[i]["fieldid"].ToString());
+                        if (drlist.Count() > 0)
+                            intQuantity = intQuantity + 1;
+                        for (int i_row = 0; i_row < drlist.Count(); i_row++)
+                        {
+                            //string str_fieldid = drlist[i_row]["fieldid"].ToString();
+                            string str_particleid = drlist[i_row]["particleid"].ToString();
+                            string str_stdtypeid = drlist[i_row]["typeid"].ToString();
+                            string str_offset_rect_X = drlist[i_row]["RectLeft"].ToString();
+                            string str_offset_rect_Y = drlist[i_row]["RectTop"].ToString();
+                            string str_offset_rect_Width = drlist[i_row]["RectWidth"].ToString();
+                            string str_offset_rect_Height = drlist[i_row]["RectHeight"].ToString();
+
+                            //确定需要标记颗粒的定位
+                            Rectangle offset_rect = new Rectangle(Convert.ToInt32(str_offset_rect_X), Convert.ToInt32(str_offset_rect_Y),
+                    Convert.ToInt32(str_offset_rect_Width), Convert.ToInt32(str_offset_rect_Height));
+
+                            //向帧图进行标记颗粒位置
+                            Graphics g = Graphics.FromImage(ls_fieldbp);
+                            g.DrawRectangle(new Pen(Color.Aquamarine), offset_rect);
+
+                            //判断是否超出了图像外面,是的话,让文字在左侧显示,默认在右侧显示
+                            int ls_offsetx = offset_rect.X + offset_rect.Width;
+                            if (ls_offsetx > ls_fieldbp.Width - 10)
+                            {
+                                ls_offsetx = offset_rect.X - 10;
                             }
+                           
+                            g.DrawString(dt_FIeld.Rows[i]["id"].ToString() + "" + str_particleid.ToString(),
+                                new Font("黑体", 8), new SolidBrush(Color.Aqua), new PointF(ls_offsetx, offset_rect.Y));
+
+                            //保存带有标记的帧图
+                            ls_fieldbp.Save(str_path_FIELD_FILES_MARK + dt_FIeld.Rows[i]["id"].ToString() + ".bmp");
+
+                            //ls_fieldbp.Dispose();
                         }
                     }
                 }
+
             }
             //
             GC.Collect();

+ 35 - 53
OTSIncAReportApp/1-UI/OTSTemplateDesigner/Export_ReportTemplate.cs

@@ -215,7 +215,7 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             DataTable dt = fielddata.GetIncaSurfaceData();
             //将颗粒大小排序(从大到小)
             DataView dv = dt.DefaultView;
-            dv.Sort = "Area DESC";
+            dv.Sort = "DMAX DESC";
             DataTable dt_ParticlesGridDevidePage = dv.ToTable();
 
 
@@ -427,72 +427,54 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             #endregion
 
             #region 插入-帧图图像部份
+            List<string> vs = new List<string>();
+            DataTable data = new DataTable();
             //首先生成标记颗粒的帧图图像文件
-            m_otsreport_export.m_ReportApp.im_ParticlesGridDevidePage.SaveMarkParticleRectangleOnFieldFile(dt_ParticlesGridDevidePage);
+            m_otsreport_export.m_ReportApp.im_ParticlesGridDevidePage.SaveMarkParticleRectangleOnFieldFile(dt_ParticlesGridDevidePage ,out vs ,out data);
 
             string str_path_FIELD_FILES_MARK = str_resultPath + "\\FIELD_FILES_MARK\\";
             DirectoryInfo theFolder = new DirectoryInfo(str_path_FIELD_FILES_MARK);
             if (theFolder.Exists)
             {
-                //for (int i = 0; i <= theFolder.GetFiles().Count(); i++)
-                //{
-                //    //判断i.bmp图片是否存在,如果不存在跳出当前循环
-                //    if (!DetermineWhetherTheFileExists(theFolder, i))
-                //        continue;
-                //    //在数据表中有颗粒在该帧图中的话,则对该帧图标记图像进行读取存入数据库
-                //    DataRow[] datarowlist = dt_ParticlesGridDevidePage.Select(" fieldid = " + i);
-
-                //    if (datarowlist.Count() > 0)
-                //    {
-                //        Bitmap ls_bp_fieldmark = new Bitmap(theFolder.GetFiles()[i].FullName);
-
-                //        DataRow dr = DT_field_dt.NewRow();
-                //        MemoryStream newms_bp_fieldmark = new MemoryStream();
-                //        ls_bp_fieldmark.Save(newms_bp_fieldmark, System.Drawing.Imaging.ImageFormat.Bmp);
-                //        newms_bp_fieldmark.Seek(0, SeekOrigin.Begin);
-                //        byte[] newarr_fieldmark = new byte[newms_bp_fieldmark.Length];
-                //        newms_bp_fieldmark.Read(newarr_fieldmark, 0, newarr_fieldmark.Length);
-                //        dr["FieldImg"] = newarr_fieldmark;
-                //        dr["FieldId"] = i;
-
-                //        ls_bp_fieldmark.Dispose();
-                //        DT_field_dt.Rows.Add(dr);
-
-                //    }
-                //}
-                foreach (FileInfo nextifile in theFolder.GetFiles())
-                {
-                    if (nextifile.Name.Contains(".bmp") == true || nextifile.Name.Contains(".BMP") == true)
+               for (int i=0;i<vs.Count;i++)
+               {
+                    foreach (FileInfo nextifile in theFolder.GetFiles())
                     {
-                        //确认对应的帧图名
-                        string str_fieldid = Path.GetFileNameWithoutExtension(nextifile.Name);
-
-                        //在数据表中有颗粒在该帧图中的话,则对该帧图标记图像进行读取存入数据库
-                        DataRow[] datarowlist = dt_ParticlesGridDevidePage.Select(" fieldid = " + str_fieldid);
-                        if (datarowlist.Count() > 0)
+                        if (nextifile.Name.Contains(".bmp") == true || nextifile.Name.Contains(".BMP") == true)
                         {
-                            Bitmap ls_bp_fieldmark = new Bitmap(nextifile.FullName);
+                            
+                            //确认对应的帧图名
+                            string str_fieldid = Path.GetFileNameWithoutExtension(nextifile.Name);
+                            if (str_fieldid==vs[i].ToString())
+                            {
+                                //在数据表中有颗粒在该帧图中的话,则对该帧图标记图像进行读取存入数据库
+                                DataRow[] datarowlist = dt_ParticlesGridDevidePage.Select(" fieldid = " + str_fieldid);
+                                if (datarowlist.Count() > 0)
+                                {
+                                    Bitmap ls_bp_fieldmark = new Bitmap(nextifile.FullName);
 
-                            DataRow dr = DT_field_dt.NewRow();
-                            MemoryStream newms_bp_fieldmark = new MemoryStream();
-                            ls_bp_fieldmark.Save(newms_bp_fieldmark, System.Drawing.Imaging.ImageFormat.Bmp);
-                            newms_bp_fieldmark.Seek(0, SeekOrigin.Begin);
-                            byte[] newarr_fieldmark = new byte[newms_bp_fieldmark.Length];
-                            newms_bp_fieldmark.Read(newarr_fieldmark, 0, newarr_fieldmark.Length);
-                            dr["FieldImg"] = newarr_fieldmark;
-                            dr["FieldId"] = str_fieldid;
+                                    DataRow dr = DT_field_dt.NewRow();
+                                    MemoryStream newms_bp_fieldmark = new MemoryStream();
+                                    ls_bp_fieldmark.Save(newms_bp_fieldmark, System.Drawing.Imaging.ImageFormat.Bmp);
+                                    newms_bp_fieldmark.Seek(0, SeekOrigin.Begin);
+                                    byte[] newarr_fieldmark = new byte[newms_bp_fieldmark.Length];
+                                    newms_bp_fieldmark.Read(newarr_fieldmark, 0, newarr_fieldmark.Length);
+                                    dr["FieldImg"] = newarr_fieldmark;
+                                    dr["FieldId"] = str_fieldid;
 
-                            ls_bp_fieldmark.Dispose();
-                            DT_field_dt.Rows.Add(dr);
+                                    ls_bp_fieldmark.Dispose();
+                                    DT_field_dt.Rows.Add(dr);
 
-                        }
+                                }
+                            }
 
+                        }
                     }
+
                 }
-                
-                DataView vw = DT_field_dt.DefaultView;
-                vw.Sort = "FieldId ASC";
-                DT_field_dt_copy = vw.ToTable();
+
+
+                DT_field_dt_copy = DT_field_dt.Copy();
             }
 
             #endregion