|
@@ -1412,7 +1412,7 @@ namespace OTSIncAReportGrids
|
|
|
/// <summary>
|
|
|
/// 在帧图上标记颗粒的位置矩形,并保存到FIELD_FILES_MARK文件夹中
|
|
|
/// </summary>
|
|
|
- public void SaveMarkParticleRectangleOnFieldFile()
|
|
|
+ public void SaveMarkParticleRectangleOnFieldFile(DataTable dataTable)
|
|
|
{
|
|
|
string str_path_FIELD_FILES = result.FilePath + "\\FIELD_FILES\\";
|
|
|
string str_path_FIELD_FILES_MARK = result.FilePath + "\\FIELD_FILES_MARK\\";
|
|
@@ -1442,65 +1442,62 @@ namespace OTSIncAReportGrids
|
|
|
//找出所有的用户库文件,在这个目录中
|
|
|
if (nextifile.Name.Contains(".bmp") == true || nextifile.Name.Contains(".BMP") == true)
|
|
|
{
|
|
|
- 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;
|
|
|
-
|
|
|
//确认对应的帧图名
|
|
|
string str_fieldid = Path.GetFileNameWithoutExtension(nextifile.Name);
|
|
|
str_fieldid = str_fieldid.Substring(5, str_fieldid.Length - 5);//减去field字符长度
|
|
|
-
|
|
|
- //循环将颗粒,进行标记到bitmap图上
|
|
|
- DataRow[] drlist = dt_AllParticle.Select(" fieldid = " + str_fieldid);
|
|
|
- for (int i_row = 0; i_row < drlist.Count(); i_row++)
|
|
|
+ if (dataTable.Select(" fieldid = " + str_fieldid).Count() > 0)
|
|
|
{
|
|
|
- //
|
|
|
- //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)
|
|
|
+ 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))
|
|
|
{
|
|
|
- ls_offsetx = offset_rect.X - 10;
|
|
|
+ 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.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");
|
|
|
+ img.Dispose();
|
|
|
+ img = null;
|
|
|
|
|
|
- //ls_fieldbp.Dispose();
|
|
|
- }
|
|
|
+ //循环将颗粒,进行标记到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();
|
|
|
GC.WaitForPendingFinalizers();
|
|
@@ -1508,7 +1505,7 @@ namespace OTSIncAReportGrids
|
|
|
|
|
|
private void testToolStripMenuItem1_Click(object sender, EventArgs e)
|
|
|
{
|
|
|
- SaveMarkParticleRectangleOnFieldFile();
|
|
|
+ //SaveMarkParticleRectangleOnFieldFile();
|
|
|
MessageBox.Show("导出完成!");
|
|
|
}
|
|
|
|