using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; namespace HOZProject.Helpers { public class NewFunMethod { //Xray谱图生成图片 /// /// Xray谱图生成图片 /// /// Xray数据 /// 元素列表 /// 保存路径名称 /// Image public void GetXrayToImage(uint[] analysis_xray, List list_showelementinfo, string saveImgPathName) { try { Control_XRayTable control_XRayTable1 = new Control_XRayTable(); //获取数据后,需要对xraytable设置 control_XRayTable1.SetXRayShowLineValue(analysis_xray, list_showelementinfo); //设置图像 Bitmap bitmap = new Bitmap(control_XRayTable1.Width, control_XRayTable1.Height); Rectangle rectImg = new Rectangle(); rectImg.Location = control_XRayTable1.Location; rectImg.Width = control_XRayTable1.Width; rectImg.Height = control_XRayTable1.Height; control_XRayTable1.DrawToBitmap(bitmap, rectImg); //如要保存请添加保存路径名称参数 bitmap.Save(saveImgPathName, System.Drawing.Imaging.ImageFormat.Png); bitmap.Dispose(); } catch (Exception ex) { //记录日志 } } /// /// BSE标注颗粒位置 /// /// BSE图像所在位置路径参数 /// 分析点位置列表 /// 绘制类型 0:点 1:线 2:面 /// 添加分析点位置标注后,图像保存路径 /// public void GetBseAnalyticalSite(string bseImgPath, List darwAPList, string saveImgPathName) { try { //1.BSE图像所在位置路径参数 System.Drawing.Image img = System.Drawing.Image.FromFile(bseImgPath); Bitmap bitmap = new Bitmap(img.Width,img.Height); string filePath = bseImgPath; //全路径 C:\aaa\bbb\ccc.xml string fileFullPath = System.IO.Path.GetFullPath(filePath); //所在文件夹路径 C:\aaa\bbb string fileDirectoryName = System.IO.Path.GetDirectoryName(filePath); //文件名称.后缀名 ccc.xml string fileName = System.IO.Path.GetFileName(filePath); //后缀名 .xml string ExtensionName = System.IO.Path.GetExtension(filePath); //2.生成图像绘制对象 Graphics g = Graphics.FromImage(bitmap); //绘制BSE原图 g.DrawImage(img, 0, 0); //编辑绘制图形的线条颜色 Pen drawPan = new Pen(Color.Red); //点标注 + 号 宽高长度 int WH = 20; //字体大小 float fontSize = 15; Font font = new Font("黑体", fontSize, FontStyle.Bold); SolidBrush solidBrush = new SolidBrush(Color.Red); //绘制标签 Y轴向上偏移位置 int drawTitleOffUPLocation = 20; //3.绘制类型 0:点 1:线 2:面 for (int i = 0; i < darwAPList.Count; i++) { DrawType drawType = darwAPList[i].DrawType; string title = darwAPList[i].Title; switch (drawType) { case DrawType.Point: int startPointX = darwAPList[i].Point.X - WH; int endPointX = darwAPList[i].Point.X + WH; int startPointY = darwAPList[i].Point.Y - WH; int endPointY = darwAPList[i].Point.Y + WH; //绘制点十字 g.DrawLine(drawPan, startPointX, darwAPList[i].Point.Y, endPointX, darwAPList[i].Point.Y); g.DrawLine(drawPan, darwAPList[i].Point.X, startPointY, darwAPList[i].Point.X, endPointY); //绘制标签 g.DrawString(title, font, solidBrush, darwAPList[i].Point.X, darwAPList[i].Point.Y- drawTitleOffUPLocation); break; case DrawType.Line: List points = darwAPList[i].LinePoints; System.Drawing.Drawing2D.GraphicsPath graphicsPath = new System.Drawing.Drawing2D.GraphicsPath(); //将多点生成绘制路径 graphicsPath.AddLines(points.ToArray()); g.DrawPath(drawPan, graphicsPath); //绘制标签 g.DrawString(title, font, solidBrush, darwAPList[i].LinePoints[0].X, darwAPList[i].LinePoints[0].Y - drawTitleOffUPLocation); break; case DrawType.Rectangle: Rectangle rect = new Rectangle(); rect.Location = new Point(darwAPList[i].Point.X, darwAPList[i].Point.Y); rect.Size = darwAPList[i].RectSize; g.DrawRectangle(drawPan, rect); //绘制标签 g.DrawString(title, font, solidBrush, darwAPList[i].Point.X, darwAPList[i].Point.Y - drawTitleOffUPLocation); break; default: break; } } //4.添加分析点位置标注后,图像保存路径 bitmap.Save(saveImgPathName, System.Drawing.Imaging.ImageFormat.Png); g.Dispose(); bitmap.Dispose(); } catch (Exception ex) { //记录日志 } } } public enum DrawType { Point = 0, Line = 1, Rectangle=2 } //元素包含信息结构 public class Periodic { string _xh; //序号 string _yzzl; //原子重量,因为有标记的重量带有()括号,所以这里先用字符串进行存储 string _fh; //符号 string _zwysm; //中文元素名 string _ywm; //英文名 string _sx1; //属性1 string _sx2; //属性2 string _sx3; //属性3 string _fl; //分类 /// /// 序号 /// public string XH { get { return _xh; } set { _xh = value; } } /// /// 原子重量 /// public string YZZL { get { return _yzzl; } set { _yzzl = value; } } /// /// 符号 /// public string FH { get { return _fh; } set { _fh = value; } } /// /// 中文元素名 /// public string ZWYSM { get { return _zwysm; } set { _zwysm = value; } } /// /// 英文名 /// public string YWM { get { return _ywm; } set { _ywm = value; } } /// /// 属性1 /// public string SX1 { get { return _sx1; } set { _sx1 = value; } } /// /// 属性2 /// public string SX2 { get { return _sx2; } set { _sx2 = value; } } /// /// 属性3 /// public string SX3 { get { return _sx3; } set { _sx3 = value; } } /// /// 分类 /// public string FL { get { return _fl; } set { _fl = value; } } } public class DrawAnalysePoint { /// /// 标签名称 /// private string title; /// /// 分析点位置 /// private Point point; /// /// 绘制类型 面尺寸 /// private Size rectSize; /// /// 绘制类型:线 点位置 /// private List linePoints; /// /// 绘制类型 Point:点 Line:线 Rectangle:面 /// private DrawType drawType; public string Title { get => title; set => title = value; } public Point Point { get => point; set => point = value; } public Size RectSize { get => rectSize; set => rectSize = value; } public List LinePoints { get => linePoints; set => linePoints = value; } public DrawType DrawType { get => drawType; set => drawType = value; } } }