ソースを参照

修改报告导出部分,更改导出颗粒列表形式颗粒进行重大到小排序选择前20个,删除显示颗粒尺寸图形显示,修改颗粒列表中颗粒元素显示不全的问题,修改颗粒尺寸列表默认显示等效圆直径

zhangjiaxin 3 年 前
コミット
610b5a3586

+ 3 - 3
Bin/x64/Debug/Config/ProData/ReportTemplateConfig.xml

@@ -15,7 +15,7 @@
   </M_YMYJ>
   <M_KLFXJG>
     <b_ck_klcc_xsmk>True</b_ck_klcc_xsmk>
-    <index_cb_klcc_jsfs>0</index_cb_klcc_jsfs>
+    <index_cb_klcc_jsfs>2</index_cb_klcc_jsfs>
     <index_cb_klcc_ljb>0</index_cb_klcc_ljb>
     <index_cb_klcc_klfw>0</index_cb_klcc_klfw>
     <b_cb_jzwfl_xsmk>True</b_cb_jzwfl_xsmk>
@@ -50,7 +50,7 @@
     </list_str_tb_yscf_ysxx>
   </M_YSFXJG>
   <M_SYXT>
-    <b_ck_syxt_xsmk>False</b_ck_syxt_xsmk>
+    <b_ck_syxt_xsmk>True</b_ck_syxt_xsmk>
     <index_cb_syxt_jsfs>0</index_cb_syxt_jsfs>
     <index_cb_syxt_klfw>0</index_cb_syxt_klfw>
     <str_cb_syxt_mhxssl>2</str_cb_syxt_mhxssl>
@@ -72,7 +72,7 @@
     </list_lbv_syxt_mblb_index>
   </M_SYXT>
   <M_KLLBXX>
-    <b_ck_kllb_xsmk>False</b_ck_kllb_xsmk>
+    <b_ck_kllb_xsmk>True</b_ck_kllb_xsmk>
     <index_cb_kllb_jsfs>0</index_cb_kllb_jsfs>
     <index_cb_kllb_klfw>0</index_cb_kllb_klfw>
     <int_tb_kllb_ylsx>1</int_tb_kllb_ylsx>

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


+ 8 - 8
Bin/x64/Debug/Resources/XMLData/AppResource_ZH.xml

@@ -632,7 +632,7 @@
 	  <Control name="partcletype6" text="不含分析元素的颗粒" />
       <Control name="partcletype7" text="非夹杂物颗粒SiC" />
 	  <Control name="partcletype8" text="非夹杂物颗粒FeO" />
-	  <Control name="partcletype9" text="未识别颗粒" />
+	  <Control name="partcletype9" text="未识别颗粒/非夹杂物" />
 	  <Control name="partcletype10" text="分析颗粒" />
     </Controls>
  </Form>
@@ -737,7 +737,7 @@
 	  <Control name="partcletype6" text="不含分析元素的颗粒" />
       <Control name="partcletype7" text="非夹杂物颗粒SiC" />
 	  <Control name="partcletype8" text="非夹杂物颗粒FeO" />
-	  <Control name="partcletype9" text="未识别颗粒" />
+	  <Control name="partcletype9" text="未识别颗粒/非夹杂物" />
     </Controls>
  </Form>
  <Form>
@@ -765,7 +765,7 @@
 	  <Control name="partcletype6" text="不含分析元素的颗粒" />
       <Control name="partcletype7" text="非夹杂物颗粒SiC" />
 	  <Control name="partcletype8" text="非夹杂物颗粒FeO" />
-	  <Control name="partcletype9" text="未识别颗粒" />
+	  <Control name="partcletype9" text="未识别颗粒/非夹杂物" />
 	  <Control name="str20" text="尖晶石" />
 	  <Control name="str21" text="氧化物" />
 	  <Control name="str22" text="硫氧化物" />
@@ -803,7 +803,7 @@
 	  <Control name="partcletype6" text="不含分析元素的颗粒" />
       <Control name="partcletype7" text="非夹杂物颗粒SiC" />
 	  <Control name="partcletype8" text="非夹杂物颗粒FeO" />
-	  <Control name="partcletype9" text="未识别颗粒" />
+	  <Control name="partcletype9" text="未识别颗粒/非夹杂物" />
     </Controls>
  </Form>
  <Form>
@@ -937,7 +937,7 @@
 	  <Control name="str8" text="灰度#" />
 	  <Control name="str9" text="移动SEM到当前位置" />
 	  <Control name="str10" text="移动SEM到颗粒视域位置" />
-          <Control name="partcletype9" text="未识别颗粒" />
+          <Control name="partcletype9" text="未识别颗粒/非夹杂物" />
 	  <Control name="partcletype10" text="分析颗粒" />
     </Controls>
  </Form>
@@ -1328,7 +1328,7 @@
 	  <Control name="partcletype6" text="不含分析元素的颗粒" />
       <Control name="partcletype7" text="非夹杂物颗粒SiC" />
 	  <Control name="partcletype8" text="非夹杂物颗粒FeO" />
-	  <Control name="partcletype9" text="未识别颗粒" />
+	  <Control name="partcletype9" text="未识别颗粒/非夹杂物" />
     </Controls>
  </Form>
  <Form>
@@ -1373,7 +1373,7 @@
 	  <Control name="partcletype6" text="不含分析元素的颗粒" />
       <Control name="partcletype7" text="非夹杂物颗粒SiC" />
 	  <Control name="partcletype8" text="非夹杂物颗粒FeO" />
-	  <Control name="partcletype9" text="未识别颗粒" /> 
+	  <Control name="partcletype9" text="未识别颗粒/非夹杂物" /> 
 	  <Control name="str21" text="面积μm²" />
 	  <Control name="str22" text="等效圆直径μm" />
 	  <Control name="str23" text="最长直径μm" />
@@ -1402,7 +1402,7 @@
 	  <Control name="str8" text="不进行x-ray分析的颗粒" />
 	  <Control name="str9" text="非夹杂物颗粒SiC" />
 	  <Control name="str10" text="非夹杂物颗粒FeO" />
-	  <Control name="str11" text="未识别颗粒" />
+	  <Control name="str11" text="未识别颗粒/非夹杂物" />
     </Controls>
  </Form>
   <!-- OTSPeriodicTable -->

+ 115 - 50
OTSIncAReportApp/1-UI/Control_Grids/ParticlesGridDevidePage.cs

@@ -1469,67 +1469,132 @@ namespace OTSIncAReportGrids
             DirectoryInfo theFolder = new DirectoryInfo(str_path_FIELD_FILES);
             if (theFolder.Exists)
             {
-                //循环帧图,再循环各帧图中的颗粒,进行标记,保存
-                foreach (FileInfo nextifile in theFolder.GetFiles())
+                int numberOfPictures = 1;
+                for (int i = 0; i < theFolder.GetFiles().Count() - 1; i++)
                 {
-                    //找出所有的用户库文件,在这个目录中
-                    if (nextifile.Name.Contains(".bmp") == true || nextifile.Name.Contains(".BMP") == true)
+                    //if (dt_AllParticle.Select("  fieldid = " + i.ToString()).Count() == 0)
+                    //    continue;
+                    if (numberOfPictures > 10)
+                        continue;
+
+                    if (dataTable.Select(" fieldid = " + i.ToString()).Count() > 0)
                     {
-                        //确认对应的帧图名
-                        string str_fieldid = Path.GetFileNameWithoutExtension(nextifile.Name);
-                        str_fieldid = str_fieldid.Substring(5, str_fieldid.Length - 5);//减去field字符长度
-                        if (dataTable.Select(" fieldid = " + str_fieldid).Count() > 0)
+                        numberOfPictures++;
+                        Image img = Image.FromFile(str_path_FIELD_FILES + theFolder.GetFiles()[i].Name);
+                        Bitmap ls_fieldbp = new Bitmap(img.Width, img.Height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
+                        using (Graphics g = Graphics.FromImage(ls_fieldbp))
                         {
-                            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))
-                            {
-                                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);
-                            }
+                            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);
+                        }
 
-                            img.Dispose();
-                            img = null;
+                        img.Dispose();
+                        img = null;
 
-                            //循环将颗粒,进行标记到bitmap图上
-                            DataRow[] drlist = dt_AllParticle.Select("  fieldid = " + str_fieldid);
-                            for (int i_row = 0; i_row < drlist.Count(); i_row++)
+                        //循环将颗粒,进行标记到bitmap图上
+                        DataRow[] drlist = dt_AllParticle.Select("  fieldid = " + i.ToString());
+                        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)
                             {
-                                //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));
+                                ls_offsetx = offset_rect.X - 10;
+                            }
+                            g.DrawString(i.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 + str_fieldid.ToString() + ".bmp");
+                            //保存带有标记的帧图
+                            ls_fieldbp.Save(str_path_FIELD_FILES_MARK + i.ToString() + ".bmp");
 
-                                //ls_fieldbp.Dispose();
-                            }
+                            //ls_fieldbp.Dispose();
                         }
                     }
+
+
                 }
+
+
+
+                ////循环帧图,再循环各帧图中的颗粒,进行标记,保存
+                //foreach (FileInfo nextifile in theFolder.GetFiles())
+                //{
+                //    //找出所有的用户库文件,在这个目录中
+                //    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字符长度
+                //        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))
+                //            {
+                //                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);
+                //            }
+
+                //            img.Dispose();
+                //            img = null;
+
+                //            //循环将颗粒,进行标记到bitmap图上
+                //            DataRow[] drlist = dt_AllParticle.Select("  fieldid = " + str_fieldid);
+                //            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));
+
+                //                //保存带有标记的帧图
+                //                ls_fieldbp.Save(str_path_FIELD_FILES_MARK + str_fieldid.ToString() + ".bmp");
+
+                //                //ls_fieldbp.Dispose();
+                //            }
+                //        }
+                //    }
+                //}
             }
             //
             GC.Collect();

+ 121 - 205
OTSIncAReportApp/1-UI/OTSTemplateDesigner/Export_ReportTemplate.cs

@@ -115,13 +115,23 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
         /// <returns></returns>
         public bool InsertReportTemplateTable_ParticlesGridDevidePage()
         {
+
+            int serialNumber = 1;
+
             //------------------加载模块,获取数据-------------------------------------------------
             //if (m_otsreport_export.m_ReportApp.im_ParticlesGridDevidePage!=null)
             m_otsreport_export.m_ReportApp.im_ParticlesGridDevidePage = new ParticlesGridDevidePage(m_otsreport_export.m_ReportApp);
 
             //根据sql条件,查询获取颗粒信息数据
             ParticleData fielddata = new ParticleData(m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_rstDataMgr.GetWorkingResult()].FilePath);
-            DataTable dt_ParticlesGridDevidePage = fielddata.GetInfoForPartucleDevidePage(0, 200, "fieldid,particleid", "");
+            //DataTable dt_ParticlesGridDevidePage = fielddata.GetInfoForPartucleDevidePage(0, 200, "fieldid,particleid", "");
+            DataTable dt = fielddata.GetIncaSurfaceData();
+            //将颗粒大小排序(从大到小)
+            DataView dv = dt.DefaultView;
+            dv.Sort = "Area DESC";
+            DataTable dt_ParticlesGridDevidePage = dv.ToTable();
+
+
 
             string str_resultPath = m_otsreport_export.m_ReportApp.m_rstDataMgr.ResultFilesList[m_otsreport_export.m_ReportApp.m_rstDataMgr.GetWorkingResult()].FilePath;
             //------------------加载模块,获取数据结束----------------------------------------------
@@ -197,125 +207,18 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
 
             #endregion
 
-            //for (int i= 0;i < dt_ParticlesGridDevidePage.Rows.Count;i++)
-            //{
-            //    //获取颗粒的fieldid,和particleid
-            //    string str_fieldid = dt_ParticlesGridDevidePage.Rows[i]["fieldid"].ToString();
-            //    string str_particleid = dt_ParticlesGridDevidePage.Rows[i]["particleid"].ToString();
-            //    string str_subparticles = dt_ParticlesGridDevidePage.Rows[i]["SubParticles"].ToString();
-            //    string str_typeid = dt_ParticlesGridDevidePage.Rows[i]["TypeId"].ToString();
-            //    string str_typename = dt_ParticlesGridDevidePage.Rows[i]["TypeName"].ToString();
-            //    string str_element = dt_ParticlesGridDevidePage.Rows[i]["Element"].ToString();
-
-
-
-            //    //获取原始颗粒图像
-            //    Bitmap bp_particle = new Bitmap(1, 1);
-            //    string str_path = str_resultPath + "\\FIELD_FILES\\";
-            //    string str_imagePath = str_path + "Field" + str_fieldid.ToString() + ".bmp";
-
-            //    if (str_subparticles != null && str_subparticles != "")
-            //    {
-
-            //    }
-            //    else
-            //    {
-            //        //正常颗粒
-            //        Rectangle rectangle = new Rectangle() { X = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i]["RectLeft"]), Y = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i]["RectTop"]), Width = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i]["RectWidth"]), Height = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i]["RectHeight"]) };
-            //        Bitmap bp_field = fielddata.ReadImageFile(str_imagePath);
-            //        bp_particle = fielddata.GetBitmapByParticle(bp_field, rectangle);
-            //        bp_particle.Tag = new List<string>() { dt_ParticlesGridDevidePage.Rows[i]["FieldId"].ToString(), dt_ParticlesGridDevidePage.Rows[i]["ParticleId"].ToString(), dt_ParticlesGridDevidePage.Rows[i]["TypeId"].ToString() };
-
-
-            //        if (fielddata.GetParticleByFidAndPid(str_fieldid, str_particleid).XRayData != null)
-            //        {
-
-            //            //获取该颗粒的xray能谱图像
-            //            System.Drawing.Bitmap bp_xraybp = ExportXRayBitmap(str_fieldid,
-            //                str_particleid, Convert.ToInt32(str_typeid), str_typename, fielddata);
-            //            Bitmap ls_xraybpnew = new Bitmap(1, 1);
-            //            ls_xraybpnew = OTSIncAReportGraph.Class.DrawFunction.KiResizeImage(bp_xraybp, 700, 115);//能谱图处理
-
-            //            //获取该颗粒的二次放大处理图像
-            //            Bitmap ls_processbitmap = new Bitmap(1, 1);
-            //            ls_processbitmap = OTSIncAReportGraph.Class.DrawFunction.GetReZoomBitmap(bp_particle);// (Bitmap)bp_particle.Clone();//待完善
-
-            //            //再将图像转成二进制流-------------------------------------------------------------------
-            //            //原图
-            //            MemoryStream newms_p1 = new MemoryStream();
-            //            bp_particle.Save(newms_p1, System.Drawing.Imaging.ImageFormat.Bmp);
-            //            newms_p1.Seek(0, SeekOrigin.Begin);
-            //            byte[] newarr_p1 = new byte[newms_p1.Length];
-            //            newms_p1.Read(newarr_p1, 0, newarr_p1.Length);
-
-            //            //二次放大图
-            //            MemoryStream newms_p2 = new MemoryStream();
-            //            ls_processbitmap.Save(newms_p2, System.Drawing.Imaging.ImageFormat.Bmp);
-            //            newms_p2.Seek(0, SeekOrigin.Begin);
-            //            byte[] newarr_p2 = new byte[newms_p2.Length];
-            //            newms_p2.Read(newarr_p2, 0, newarr_p2.Length);
-
-            //            //能谱图
-            //            MemoryStream newms_p3 = new MemoryStream();
-            //            ls_xraybpnew.Save(newms_p3, System.Drawing.Imaging.ImageFormat.Bmp);
-            //            newms_p3.Seek(0, SeekOrigin.Begin);
-            //            byte[] newarr_p3 = new byte[newms_p3.Length];
-            //            newms_p3.Read(newarr_p3, 0, newarr_p3.Length);
-            //            //---------------------------------------------------------------------------------------                  
-            //            DataRow dr = DT_Largest20.NewRow();
-
-            //            dr["p1"] = newarr_p1;
-            //            dr["p2"] = newarr_p2;
-            //            dr["p3"] = newarr_p3;
-            //            newms_p1.Dispose();
-            //            newms_p2.Dispose();
-            //            newms_p3.Dispose();
-
-            //            dr["pid"] = str_fieldid + dt_ParticlesGridDevidePage.Rows[i]["particleid"].ToString();
-            //            dr["Size"] = Convert.ToDouble(dt_ParticlesGridDevidePage.Rows[i]["area"]).ToString("#0.00"); //可以需要选择切换,计算方式
-            //            dr["Width"] = dt_ParticlesGridDevidePage.Rows[i]["rectwidth"].ToString();
-            //            dr["Class"] = dt_ParticlesGridDevidePage.Rows[i]["typename"].ToString();
-
-
-            //            List<string> list_max_elementname = new List<string>();
-            //            List<double> list_max_elementvale = new List<double>();
-            //            GetMaxElementFromDataTable(dt_ParticlesGridDevidePage, i, out list_max_elementname, out list_max_elementvale);
-            //            //元素1
-            //            dr["ColName1"] = list_max_elementname[0];
-            //            dr["ColVal1"] = list_max_elementvale[0].ToString();
-            //            //元素2
-            //            dr["ColName2"] = list_max_elementname[1];
-            //            dr["ColVal2"] = list_max_elementvale[1].ToString();
-            //            //元素3
-            //            dr["ColName3"] = list_max_elementname[2];
-            //            dr["ColVal3"] = list_max_elementvale[2].ToString();
-            //            //元素4
-            //            dr["ColName4"] = list_max_elementname[3];
-            //            dr["ColVal4"] = list_max_elementvale[3].ToString();
-            //            //元素5
-            //            dr["ColName5"] = list_max_elementname[4];
-            //            dr["ColVal5"] = list_max_elementvale[4].ToString();
-            //            //元素6
-            //            dr["ColName6"] = list_max_elementname[5];
-            //            dr["ColVal6"] = list_max_elementvale[5].ToString();
-
-
-            //            DT_Largest20.Rows.Add(dr);
-
-            //        }
-            //    }
-
-
-
-
-            //}
+
 
 
             #region 插入-前20颗粒部份
-            for (int i_row = 0; i_row < 20; i_row++)
+
+           
+            for (int i_row = 0; i_row < dt_ParticlesGridDevidePage.Rows.Count; i_row++)
             {
-                if (i_row < dt_ParticlesGridDevidePage.Rows.Count)
+                if (dt_ParticlesGridDevidePage.Rows[i_row].ItemArray[24].ToString()!= "Not Identified")
                 {
+
+
                     //获取颗粒的fieldid,和particleid
                     string str_fieldid = dt_ParticlesGridDevidePage.Rows[i_row]["fieldid"].ToString();
                     string str_particleid = dt_ParticlesGridDevidePage.Rows[i_row]["particleid"].ToString();
@@ -332,6 +235,10 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
                     if (str_fieldid == "-1")
                         continue;
 
+
+                    if (serialNumber > 20)
+                        continue;
+
                     if (str_subparticles != null && str_subparticles != "")
                     {
                         //合并大颗粒
@@ -345,14 +252,10 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
                     {
                         //正常颗粒
                         Rectangle rectangle = new Rectangle() { X = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectLeft"]), Y = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectTop"]), Width = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectWidth"]), Height = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectHeight"]) };
-                    Bitmap bp_field = fielddata.ReadImageFile(str_imagePath);
-                    bp_particle = fielddata.GetBitmapByParticle(bp_field, rectangle);
-                    bp_particle.Tag = new List<string>() { dt_ParticlesGridDevidePage.Rows[i_row]["FieldId"].ToString(), dt_ParticlesGridDevidePage.Rows[i_row]["ParticleId"].ToString(), dt_ParticlesGridDevidePage.Rows[i_row]["TypeId"].ToString() };
-                }
-
-                //fielddata.GetParticleByFidAndPid(str_fieldid, str_particleid);
-
-
+                        Bitmap bp_field = fielddata.ReadImageFile(str_imagePath);
+                        bp_particle = fielddata.GetBitmapByParticle(bp_field, rectangle);
+                        bp_particle.Tag = new List<string>() { dt_ParticlesGridDevidePage.Rows[i_row]["FieldId"].ToString(), dt_ParticlesGridDevidePage.Rows[i_row]["ParticleId"].ToString(), dt_ParticlesGridDevidePage.Rows[i_row]["TypeId"].ToString() };
+                    }
                 //获取该颗粒的xray能谱图像
                 System.Drawing.Bitmap bp_xraybp = ExportXRayBitmap(str_fieldid,
                         str_particleid, Convert.ToInt32(str_typeid), str_typename, fielddata);
@@ -394,7 +297,8 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
                     newms_p2.Dispose();
                     newms_p3.Dispose();
 
-                    dr["pid"] = str_fieldid + dt_ParticlesGridDevidePage.Rows[i_row]["particleid"].ToString();
+                    dr["pid"] = serialNumber++.ToString();
+                    //dr["pid"] = str_fieldid + dt_ParticlesGridDevidePage.Rows[i_row]["particleid"].ToString();
                     dr["Size"] = Convert.ToDouble(dt_ParticlesGridDevidePage.Rows[i_row]["area"]).ToString("#0.00"); //可以需要选择切换,计算方式
                     dr["Width"] = dt_ParticlesGridDevidePage.Rows[i_row]["rectwidth"].ToString();
                     dr["Class"] = dt_ParticlesGridDevidePage.Rows[i_row]["typename"].ToString();
@@ -436,6 +340,7 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             DirectoryInfo theFolder = new DirectoryInfo(str_path_FIELD_FILES_MARK);
             if (theFolder.Exists)
             {
+
                 foreach (FileInfo nextifile in theFolder.GetFiles())
                 {
                     if (nextifile.Name.Contains(".bmp") == true || nextifile.Name.Contains(".BMP") == true)
@@ -471,89 +376,94 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             #endregion
 
             #region 插入-前20颗粒外的颗粒
-            for (int i_row = 20; i_row < dt_ParticlesGridDevidePage.Rows.Count; i_row++)
+            for (int i_row = 0; i_row < dt_ParticlesGridDevidePage.Rows.Count; i_row++)
             {
                 //获取颗粒的fieldid,和particleid
                 string str_fieldid = dt_ParticlesGridDevidePage.Rows[i_row]["fieldid"].ToString();
-                string str_particleid = dt_ParticlesGridDevidePage.Rows[i_row]["particleid"].ToString();
-                string str_subparticles = dt_ParticlesGridDevidePage.Rows[i_row]["SubParticles"].ToString();
-                string str_typeid = dt_ParticlesGridDevidePage.Rows[i_row]["TypeId"].ToString();
-                string str_typename = dt_ParticlesGridDevidePage.Rows[i_row]["TypeName"].ToString();
-                string str_element = dt_ParticlesGridDevidePage.Rows[i_row]["Element"].ToString();
-
-                //获取原始颗粒图像
-                Bitmap bp_particle = new Bitmap(1, 1);
-                string str_path = str_resultPath + "\\FIELD_FILES\\";
-                string str_imagePath = str_path + "Field" + str_fieldid.ToString() + ".bmp";
-                if (str_subparticles != null && str_subparticles != "")
+                if (Convert.ToInt32(str_fieldid) < 20)
                 {
-                    //合并大颗粒
-                    double ScanFieldSize = 1142;
-                    Bitmap tempbit = fielddata.ReadImageFile(str_imagePath);
-                    int pixw = tempbit.Width;
-                    double xs = pixw / ScanFieldSize;
-                    bp_particle = fielddata.GetBitmapForBig(str_subparticles, xs, str_resultPath);
-                }
-                else
-                {
-                    //正常颗粒
-                    Rectangle rectangle = new Rectangle() { X = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectLeft"]), Y = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectTop"]), Width = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectWidth"]), Height = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectHeight"]) };
-                    Bitmap bp_field = fielddata.ReadImageFile(str_imagePath);
-                    bp_particle = fielddata.GetBitmapByParticle(bp_field, rectangle);
-                    bp_particle.Tag = new List<string>() { dt_ParticlesGridDevidePage.Rows[i_row]["FieldId"].ToString(), dt_ParticlesGridDevidePage.Rows[i_row]["ParticleId"].ToString(), dt_ParticlesGridDevidePage.Rows[i_row]["TypeId"].ToString() };
-                }
+                    
+                    string str_particleid = dt_ParticlesGridDevidePage.Rows[i_row]["particleid"].ToString();
+                    string str_subparticles = dt_ParticlesGridDevidePage.Rows[i_row]["SubParticles"].ToString();
+                    string str_typeid = dt_ParticlesGridDevidePage.Rows[i_row]["TypeId"].ToString();
+                    string str_typename = dt_ParticlesGridDevidePage.Rows[i_row]["TypeName"].ToString();
+                    string str_element = dt_ParticlesGridDevidePage.Rows[i_row]["Element"].ToString();
 
-                //获取该颗粒的xray能谱图像
-                System.Drawing.Bitmap bp_xraybp = ExportXRayBitmap(str_fieldid,
-                    str_particleid, Convert.ToInt32(str_typeid), str_typename, fielddata);
-
-                //获取该颗粒的二次放大处理图像
-                Bitmap ls_processbitmap = new Bitmap(1, 1);
-                ls_processbitmap = (Bitmap)bp_particle.Clone();//待完善
-
-                //再将图像转成二进制流-------------------------------------------------------------------
-                //原图
-                MemoryStream newms_p1 = new MemoryStream();
-                bp_particle.Save(newms_p1, System.Drawing.Imaging.ImageFormat.Bmp);
-                newms_p1.Seek(0, SeekOrigin.Begin);
-                byte[] newarr_p1 = new byte[newms_p1.Length];
-                newms_p1.Read(newarr_p1, 0, newarr_p1.Length);
-                //---------------------------------------------------------------------------------------                  
-                DataRow dr = DT_Largest_frame.NewRow();
-                dr["p1"] = newarr_p1;
-                newms_p1.Dispose();
-
-                dr["pid"] = str_fieldid + dt_ParticlesGridDevidePage.Rows[i_row]["particleid"].ToString();
-                dr["Size"] = Convert.ToDouble(dt_ParticlesGridDevidePage.Rows[i_row]["area"]).ToString("#0.00");  //可以需要选择切换,计算方式
-                dr["Width"] = dt_ParticlesGridDevidePage.Rows[i_row]["rectwidth"].ToString();
-                dr["Class"] = dt_ParticlesGridDevidePage.Rows[i_row]["typename"].ToString();
-
-                dr["fieldid"] = str_fieldid;
-
-                List<string> list_max_elementname = new List<string>();
-                List<double> list_max_elementvale = new List<double>();
-                GetMaxElementFromDataTable(dt_ParticlesGridDevidePage, i_row, out list_max_elementname, out list_max_elementvale);
-                //元素1
-                dr["ColName1"] = list_max_elementname[0];
-                dr["ColVal1"] = list_max_elementvale[0].ToString();
-                //元素2
-                dr["ColName2"] = list_max_elementname[1];
-                dr["ColVal2"] = list_max_elementvale[1].ToString();
-                //元素3
-                dr["ColName3"] = list_max_elementname[2];
-                dr["ColVal3"] = list_max_elementvale[2].ToString();
-                //元素4
-                dr["ColName4"] = list_max_elementname[3];
-                dr["ColVal4"] = list_max_elementvale[3].ToString();
-                //元素5
-                dr["ColName5"] = list_max_elementname[4];
-                dr["ColVal5"] = list_max_elementvale[4].ToString();
-                //元素6
-                dr["ColName6"] = list_max_elementname[5];
-                dr["ColVal6"] = list_max_elementvale[5].ToString();
-
-               
-                DT_Largest_frame.Rows.Add(dr);
+                    //获取原始颗粒图像
+                    Bitmap bp_particle = new Bitmap(1, 1);
+                    string str_path = str_resultPath + "\\FIELD_FILES\\";
+                    string str_imagePath = str_path + "Field" + str_fieldid.ToString() + ".bmp";
+                    if (str_subparticles != null && str_subparticles != "")
+                    {
+                        //合并大颗粒
+                        double ScanFieldSize = 1142;
+                        Bitmap tempbit = fielddata.ReadImageFile(str_imagePath);
+                        int pixw = tempbit.Width;
+                        double xs = pixw / ScanFieldSize;
+                        bp_particle = fielddata.GetBitmapForBig(str_subparticles, xs, str_resultPath);
+                    }
+                    else
+                    {
+                        //正常颗粒
+                        Rectangle rectangle = new Rectangle() { X = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectLeft"]), Y = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectTop"]), Width = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectWidth"]), Height = Convert.ToInt32(dt_ParticlesGridDevidePage.Rows[i_row]["RectHeight"]) };
+                        Bitmap bp_field = fielddata.ReadImageFile(str_imagePath);
+                        bp_particle = fielddata.GetBitmapByParticle(bp_field, rectangle);
+                        bp_particle.Tag = new List<string>() { dt_ParticlesGridDevidePage.Rows[i_row]["FieldId"].ToString(), dt_ParticlesGridDevidePage.Rows[i_row]["ParticleId"].ToString(), dt_ParticlesGridDevidePage.Rows[i_row]["TypeId"].ToString() };
+                    }
+
+                    //获取该颗粒的xray能谱图像
+                    System.Drawing.Bitmap bp_xraybp = ExportXRayBitmap(str_fieldid,
+                        str_particleid, Convert.ToInt32(str_typeid), str_typename, fielddata);
+
+                    //获取该颗粒的二次放大处理图像
+                    Bitmap ls_processbitmap = new Bitmap(1, 1);
+                    ls_processbitmap = (Bitmap)bp_particle.Clone();//待完善
+
+                    //再将图像转成二进制流-------------------------------------------------------------------
+                    //原图
+                    MemoryStream newms_p1 = new MemoryStream();
+                    bp_particle.Save(newms_p1, System.Drawing.Imaging.ImageFormat.Bmp);
+                    newms_p1.Seek(0, SeekOrigin.Begin);
+                    byte[] newarr_p1 = new byte[newms_p1.Length];
+                    newms_p1.Read(newarr_p1, 0, newarr_p1.Length);
+                    //---------------------------------------------------------------------------------------                  
+                    DataRow dr = DT_Largest_frame.NewRow();
+                    dr["p1"] = newarr_p1;
+                    newms_p1.Dispose();
+
+                    dr["pid"] = str_fieldid + dt_ParticlesGridDevidePage.Rows[i_row]["particleid"].ToString();
+                    dr["Size"] = Convert.ToDouble(dt_ParticlesGridDevidePage.Rows[i_row]["area"]).ToString("#0.00");  //可以需要选择切换,计算方式
+                    dr["Width"] = dt_ParticlesGridDevidePage.Rows[i_row]["rectwidth"].ToString();
+                    dr["Class"] = dt_ParticlesGridDevidePage.Rows[i_row]["typename"].ToString();
+
+                    dr["fieldid"] = str_fieldid;
+
+                    List<string> list_max_elementname = new List<string>();
+                    List<double> list_max_elementvale = new List<double>();
+                    GetMaxElementFromDataTable(dt_ParticlesGridDevidePage, i_row, out list_max_elementname, out list_max_elementvale);
+                    //元素1
+                    dr["ColName1"] = list_max_elementname[0];
+                    dr["ColVal1"] = list_max_elementvale[0].ToString();
+                    //元素2
+                    dr["ColName2"] = list_max_elementname[1];
+                    dr["ColVal2"] = list_max_elementvale[1].ToString();
+                    //元素3
+                    dr["ColName3"] = list_max_elementname[2];
+                    dr["ColVal3"] = list_max_elementvale[2].ToString();
+                    //元素4
+                    dr["ColName4"] = list_max_elementname[3];
+                    dr["ColVal4"] = list_max_elementvale[3].ToString();
+                    //元素5
+                    dr["ColName5"] = list_max_elementname[4];
+                    dr["ColVal5"] = list_max_elementvale[4].ToString();
+                    //元素6
+                    dr["ColName6"] = list_max_elementname[5];
+                    dr["ColVal6"] = list_max_elementvale[5].ToString();
+
+
+                    DT_Largest_frame.Rows.Add(dr);
+                }
+                
             }
             #endregion
 
@@ -577,7 +487,7 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             {
                 //加载模块
                 ParticlesSizeGrid ls_particlesizegrid = new ParticlesSizeGrid(m_otsreport_export.m_ReportApp);
-                List<string> vs = new List<string>() { "DMAX", "DMIN", "Area", "FERET" };
+                List<string> vs = new List<string>() { "DMAX", "DMIN", "CIRCLE", "FERET" };
                 ls_particlesizegrid.condition = vs[m_otsreport_export.m_mbszclass.M_KLFXJG.index_cb_klcc_jsfs];
                 m_otsreport_export.panel_container.Controls.Clear();
                 m_otsreport_export.panel_container.Controls.Add(ls_particlesizegrid);
@@ -768,6 +678,12 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
                     dr2["AllElements"] = AllElements;
                     ls_element_dt.Rows.Add(dr2);
                 }
+                //获取夹杂物的总面积用于计算夹杂物类别的占比(gridview最后一个固定是未识别颗粒,要排除未识别颗粒所以for循环至grid view长度减一)
+                double totalInclusionArea = 0;
+                for (int i = 0; i < ls_gv.Rows.Count - 1; i++)
+                {
+                    totalInclusionArea = totalInclusionArea + Convert.ToDouble(ls_gv.Rows[i].Cells[2].Value.ToString());
+                }
 
                 m_list_dt.Add(ls_elementname_dt);
                 m_list_dt.Add(ls_element_dt);
@@ -1257,7 +1173,7 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             if (str_element != "")
             {
                 string[] strcbo = str_element.Split(';');
-                for (int i = 0; i < strcbo.Length; i++)
+                for (int i = 0; i < strcbo.Length-1; i++)
                 {
                     string[] str = strcbo[i].Split('-');
                     list_elementname.Add(str[0]);
@@ -1272,7 +1188,7 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
                 string max_elementname = "";
                 int max_index = -1;
 
-                if (list_elementvalue.Count > 1)
+                if (list_elementvalue.Count > 0)
                 {
                     for (int i = 0; i < list_elementvalue.Count; i++)
                     {

+ 24 - 0
OTSIncAReportApp/3-ServiceCenter/DataOperation/DataAccess/ParticleData.cs

@@ -396,6 +396,30 @@ namespace OTSIncAReportApp.DataOperation.DataAccess
             DT = dbHelper.ExecuteQuery(sqliteString);
             return DT;
         }
+        public DataTable GetIncaSurfaceData()
+        {
+            DataTable particlesAll = new DataTable();
+            particlesAll = GetInfoForPartucleDevidePage2("");
+
+            DataTable elementchemistry = GetElementChemistry();
+            for (int i = 0; i < particlesAll.Rows.Count; i++)
+            {
+                string str = "XRayId = " + particlesAll.Rows[i]["particleId"].ToString() + " and fieldid = " + particlesAll.Rows[i]["fieldid"].ToString();
+                DataRow[] drs = elementchemistry.Select(str);
+                string ConcatenatedString = "";
+                for (int j = 0; j < drs.Length; j++)
+                {
+                    ConcatenatedString += drs[j]["name"] + "-" + drs[j]["Percentage"] + ';';
+                }
+                particlesAll.Rows[i]["Element"] = ConcatenatedString;
+            }
+
+
+
+            //string sqlliteString = "select * from INcAData";
+            //DataTable dt = dbHelper.ExecuteQuery(sqlliteString);
+            return particlesAll;
+        }
         public DataTable GetInfoForPartucleDevidePage2(string condition)
         {
             string sqliteString = "select fieldid,particleid,AveGray,RectLeft,RectTop,RectWidth,RectHeight,Area,PosX,PosY,TypeId,SegmentNum,FieldPosX as 'SEMPosX',FieldPosY as 'SEMPosY',XrayId,DMAX,DMIN,DPERP,PERIMETER,ORIENTATION,DINSCR,DMEAN,DELONG,DFERET,TypeName,TypeColor,SubParticles, (select group_concat(name || '-' || Percentage, ';') from ElementChemistry where XRayId = MergedParticleInfo.XRayId and fieldid = MergedParticleInfo.fieldid) as Element from MergedParticleInfo where 1=1 " + condition + " union select fieldid,particleid,AveGray,RectLeft,RectTop,RectWidth,RectHeight,Area,PosX,PosY,TypeId,SegmentNum,FieldPosX,FieldPosY,XrayId,DMAX,DMIN,DPERP,PERIMETER,ORIENTATION,DINSCR,DMEAN,DELONG,DFERET,TypeName,TypeColor,'' as SubParticles,'' as Element from INcAData where xrayid > -1 and instr(','||(select ifnull(group_concat(SubParticles, ','),'') from MergedParticleInfo)|| ',',',' || fieldid || ':' || particleid || ',')= 0 " + condition;

+ 9 - 9
OTSIncAReportTemplate/OTSIncAReportTemplate.cs

@@ -91,7 +91,7 @@ namespace OTSIncAReportTemplate
                 m_arg4 = "100";
                 m_arg5 = "0-100";
             }
-
+            
 
             //初始化xml类
             xmlutil = new XmlConfigUtil(m_arg2);
@@ -285,11 +285,11 @@ namespace OTSIncAReportTemplate
                 }
                 if (m_mbszclass.M_KLFXJG.b_cb_jzwfl_xsmk)//判断夹杂物分类图
                 {
-                    DataTable ls_dt_picKL = list_dt.Where(aa => aa.TableName.Contains("PicKL")).ToList()[0];// 用于颗粒图chart
-                    rmReport1.AddDataSet(ls_dt_picKL, "PicKL");
-                    ls_dt_picKL.Dispose();
-                    //ls_dt_picKL.Clear();
-                    rmReport1.FindObject("MasterData95").Prop["Visible"] = true;
+                    //DataTable ls_dt_picKL = list_dt.Where(aa => aa.TableName.Contains("PicKL")).ToList()[0];// 用于颗粒图chart
+                    //rmReport1.AddDataSet(ls_dt_picKL, "PicKL");
+                    //ls_dt_picKL.Dispose();
+                    ////ls_dt_picKL.Clear();
+                    //rmReport1.FindObject("MasterData95").Prop["Visible"] = true;
                 }
                 else
                 {
@@ -926,9 +926,9 @@ namespace OTSIncAReportTemplate
             ls_Particel.TableName = "Particel";
             list_dt.Add(ls_Particel);
 
-            DataTable ls_PicKL = sh.ExecuteQuery("select * from PicKL");
-            ls_PicKL.TableName = "PicKL";
-            list_dt.Add(ls_PicKL);
+            //DataTable ls_PicKL = sh.ExecuteQuery("select * from PicKL");
+            //ls_PicKL.TableName = "PicKL";
+            //list_dt.Add(ls_PicKL);
 
             DataTable ls_PicYS = sh.ExecuteQuery("select * from PicYS");
             ls_PicYS.TableName = "PicYS";