CreateRectangle.cs 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Drawing.Drawing2D;
  5. using System.Windows.Forms;
  6. namespace OTSMeasureApp
  7. {
  8. public class CRectangleGDIObject /*: CRectangleGDIObject */// 同样的方式可以从ADraggableGDIObject生成其它图形的继承角类,比如矩形,三形等等。。
  9. {
  10. public CRectangleGDIObject()
  11. {
  12. ID = System.Guid.NewGuid().ToString();
  13. OTSX = -1;
  14. OTSY = -1;
  15. }
  16. /// <summary>
  17. /// 创建图形
  18. /// </summary>
  19. /// <param name="startx">X位置</param>
  20. /// <param name="starty">Y位置</param>
  21. /// <param name="width">宽度</param>
  22. /// <param name="height">高度</param>
  23. /// <param name="cType">图形类型:createType=0 圆角矩形 createType=1 圆形 createType=2 文字</param>
  24. /// <param name="content">文字内容</param>
  25. public CRectangleGDIObject(float startx, float starty, float width, float height, CreateRectangleType cType, string content, string name)
  26. {
  27. var rec = new RectangleF(startx, starty, width, height);
  28. m_OrigineRegionF = rec;
  29. SetInitRegionF(m_OrigineRegionF);
  30. CreateType = cType;
  31. strContent = content;
  32. Name = name;
  33. ID = System.Guid.NewGuid().ToString();
  34. OTSX = -1;
  35. OTSY = -1;
  36. }
  37. public CRectangleGDIObject(RectangleF rect, CreateRectangleType cType)
  38. {
  39. m_OrigineRegionF = rect;
  40. SetInitRegionF(m_OrigineRegionF);
  41. CreateType = cType;
  42. ID = System.Guid.NewGuid().ToString();
  43. //startPoint = new PointF(rect.Left, rect.Top);
  44. //EndPoint = new PointF(rect.Right, rect.Bottom);
  45. OTSX = -1;
  46. OTSY = -1;
  47. }
  48. public CRectangleGDIObject(RectangleF rect, CreateRectangleType cType, string name)
  49. {
  50. m_OrigineRegionF = rect;
  51. SetInitRegionF(m_OrigineRegionF);
  52. CreateType = cType;
  53. Name = name;
  54. ID = System.Guid.NewGuid().ToString();
  55. OTSX = -1;
  56. OTSY = -1;
  57. }
  58. public CRectangleGDIObject(RectangleF rect, CreateRectangleType cType, ShapeType shape, string name)
  59. {
  60. m_OrigineRegionF = rect;
  61. SetInitRegionF(m_OrigineRegionF);
  62. CreateType = cType;
  63. Name = name;
  64. Shape = shape;
  65. ID = System.Guid.NewGuid().ToString();
  66. OTSX = -1;
  67. OTSY = -1;
  68. }
  69. public CRectangleGDIObject(RectangleF rect, CreateRectangleType cType, ShapeType shape, string name, Color selColor)
  70. {
  71. m_OrigineRegionF = rect;
  72. SetInitRegionF(m_OrigineRegionF);
  73. CreateType = cType;
  74. Name = name;
  75. Shape = shape;
  76. SelColor = selColor;
  77. ID = System.Guid.NewGuid().ToString();
  78. OTSX = -1;
  79. OTSY = -1;
  80. }
  81. public CRectangleGDIObject(RectangleF rectMeasure, CreateRectangleType cType, ShapeType shape, string name, string sampleName, Color selColor)
  82. {
  83. m_OrigineRegionF = rectMeasure;
  84. SetInitRegionF(m_OrigineRegionF);
  85. CreateType = cType;
  86. Name = name;
  87. Shape = shape;
  88. SelColor = selColor;
  89. SampleName = sampleName;
  90. ID = System.Guid.NewGuid().ToString();
  91. OTSX = -1;
  92. OTSY = -1;
  93. }
  94. //绘制帧图
  95. public CRectangleGDIObject(RectangleF rectSingle, CreateRectangleType cType, string name, string sampleName, Color selColor)
  96. {
  97. m_OrigineRegionF = rectSingle;
  98. SetInitRegionF(m_OrigineRegionF);
  99. CreateType = cType;
  100. Name = name;
  101. Shape = 0;
  102. SelColor = selColor;
  103. SampleName = sampleName;
  104. ID = System.Guid.NewGuid().ToString();
  105. OTSX = -1;
  106. OTSY = -1;
  107. }
  108. //绘制帧图
  109. public CRectangleGDIObject(RectangleF rectSingle, int OTSx, int OTSy, CreateRectangleType cType, string name, string sampleName, Color selColor)
  110. {
  111. m_OrigineRegionF = rectSingle;
  112. SetInitRegionF(m_OrigineRegionF);
  113. CreateType = cType;
  114. Name = name;
  115. Shape = 0;
  116. SelColor = selColor;
  117. SampleName = sampleName;
  118. ID = System.Guid.NewGuid().ToString();
  119. OTSX = OTSx;
  120. OTSY = OTSy;
  121. }
  122. /// <summary>
  123. /// 获取样品孔中BSE图像
  124. /// </summary>
  125. /// <param name="rect">位置大小</param>
  126. /// <param name="sampleHoleName">所在样品孔名称</param>
  127. /// <param name="bseImage">图像信息</param>
  128. /// <param name="bseImageWitdh">图像宽度</param>
  129. /// <param name="bseImageHeight">图像高度</param>
  130. /// <param name="drawImageLocation">图像开始位置</param>
  131. /// <param name="cType">绘制类型</param>
  132. public CRectangleGDIObject(RectangleF rect, int OTSx, int OTSy, string sampleName, string sampleHoleName, Image bseImage, float bseImageWitdh, float bseImageHeight, CreateRectangleType cType)
  133. {
  134. m_OrigineRegionF = rect;
  135. SetInitRegionF(m_OrigineRegionF);
  136. Name = sampleHoleName;
  137. SampleName = sampleName;
  138. //生成编号
  139. ID = System.Guid.NewGuid().ToString();
  140. //图像信息
  141. BSEImage = bseImage;
  142. //图像宽度
  143. BSEImageWitdh = bseImageWitdh;
  144. //图像高度
  145. BSEImageHeight = bseImageHeight;
  146. //图像位置
  147. BSEImageLocation = rect.Location;
  148. OTSX = OTSx;
  149. OTSY = OTSy;
  150. //绘制类型
  151. CreateType = cType;
  152. }
  153. public CRectangleGDIObject(RectangleF rect, Point ImgPoint, float m_Multiple, CreateRectangleType cType)
  154. {
  155. m_OrigineRegionF = rect;
  156. SetInitRegionF(m_OrigineRegionF);
  157. CreateType = cType;
  158. ID = System.Guid.NewGuid().ToString();
  159. //startPoint = new PointF(rect.Left, rect.Top);
  160. //EndPoint = new PointF(rect.Right, rect.Bottom);
  161. OTSX = -1;
  162. OTSY = -1;
  163. }
  164. /// <summary>
  165. /// 获取多边形点集合
  166. /// </summary>
  167. /// <param name="mPoint"></param>
  168. /// <param name="cType"></param>
  169. public CRectangleGDIObject(List<PointF> mPoint, CreateRectangleType cType, ShapeType shape, string name, string sampleName, Color selColor)
  170. {
  171. ID = System.Guid.NewGuid().ToString();
  172. this.PolygonPointFList = mPoint;
  173. Name = name;
  174. SampleName = sampleName;
  175. CreateType = cType;
  176. Shape = shape;
  177. SelColor = selColor;
  178. //if(mPoint.Count>2)
  179. //GPath.AddPolygon(PolygonPointFList.ToArray());
  180. }
  181. #region 变量重写
  182. public void OnPaint(PaintEventArgs e)
  183. {
  184. //createType=0 圆角矩形 createType=1 圆形 createType=2 文字
  185. if (createType == CreateRectangleType.SampleBackGround_Rectangle)
  186. {
  187. //获取颜色
  188. string ColorStr = OTSSamplespaceGraphicsPanelFun.GetColorValue(ColorType.RoundRectangleColor);
  189. Color myColor = ColorTranslator.FromHtml(ColorStr);
  190. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  191. GraphicsPath grPath = CreateRoundedRectanglePath(m_RegionF, 20);
  192. e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
  193. e.Graphics.FillPath(sampleBrush, grPath);
  194. e.Graphics.DrawPath(Pens.Black, grPath);
  195. }
  196. //样品台-圆形
  197. else if (createType == CreateRectangleType.SampleBackGround_Circle)
  198. {
  199. //获取颜色
  200. string ColorStr = OTSSamplespaceGraphicsPanelFun.GetColorValue(ColorType.SampleBackGroundColor);
  201. Color myColor = ColorTranslator.FromHtml(ColorStr);
  202. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  203. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  204. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  205. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  206. e.Graphics.FillEllipse(sampleBrush, m_RegionF);
  207. e.Graphics.DrawEllipse(Pens.Black, m_RegionF);
  208. }
  209. //圆形
  210. else if (createType == CreateRectangleType.Circle)
  211. {
  212. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(System.Drawing.Color.White);
  213. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  214. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  215. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  216. e.Graphics.FillEllipse(sampleBrush, m_RegionF);
  217. e.Graphics.DrawEllipse(Pens.Black, m_RegionF);
  218. }
  219. //文字
  220. else if (createType == CreateRectangleType.Text)
  221. {
  222. //设置文字对齐方式
  223. StringFormat sf = new StringFormat();
  224. sf.Alignment = StringAlignment.Center;
  225. sf.LineAlignment = StringAlignment.Center;
  226. //文字颜色
  227. string ColorStr = OTSSamplespaceGraphicsPanelFun.GetColorValue(ColorType.FontColor);
  228. Color myColor = ColorTranslator.FromHtml(ColorStr);
  229. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  230. SolidBrush solidBrush = new SolidBrush(Color.FromArgb(50, Color.Black));
  231. //字体大小 根据样品孔Rectangle大小
  232. float fontSize = m_RegionF.Width / 4;
  233. Font font = new Font("宋体", fontSize, FontStyle.Regular);
  234. if (fontSize == 0)
  235. {
  236. font = new Font("宋体", fontSize, FontStyle.Regular);
  237. }
  238. //消除锯齿
  239. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  240. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  241. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  242. //绘制文字阴影
  243. RectangleF rectFont = m_RegionF;
  244. rectFont.X += 2;
  245. rectFont.Y += 2;
  246. e.Graphics.DrawString(strContent, font, solidBrush, rectFont, sf);
  247. e.Graphics.DrawString(strContent, font, sampleBrush, m_RegionF, sf);
  248. }
  249. //矩形
  250. else if (createType == CreateRectangleType.Rectangle)
  251. {
  252. Color myColor = System.Drawing.Color.White;
  253. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  254. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  255. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  256. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  257. e.Graphics.FillRectangle(sampleBrush, m_RegionF);
  258. var m_Region = new Rectangle();
  259. m_Region.X = (int)m_RegionF.X;
  260. m_Region.Y = (int)m_RegionF.Y;
  261. m_Region.Width = (int)m_RegionF.Width;
  262. m_Region.Height = (int)m_RegionF.Height;
  263. e.Graphics.DrawRectangle(Pens.Black, m_Region);
  264. }
  265. //选择样品台
  266. else if (createType == CreateRectangleType.SelectSample)
  267. {
  268. Color myColor = selColor;
  269. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  270. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  271. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  272. e.Graphics.CompositingQuality = CompositingQuality.AssumeLinear;//再加一点
  273. if (Shape == 0)
  274. {
  275. e.Graphics.FillEllipse(sampleBrush, m_RegionF);
  276. e.Graphics.DrawEllipse(Pens.Black, m_RegionF);
  277. }
  278. else
  279. {
  280. e.Graphics.FillRectangle(sampleBrush, m_RegionF);
  281. var m_Region = new Rectangle();
  282. m_Region.X = (int)m_RegionF.X;
  283. m_Region.Y = (int)m_RegionF.Y;
  284. m_Region.Width = (int)m_RegionF.Width;
  285. m_Region.Height = (int)m_RegionF.Height;
  286. e.Graphics.DrawRectangle(Pens.Black, m_Region);
  287. }
  288. }
  289. //测试区域
  290. else if (createType == CreateRectangleType.MeasureArea)
  291. {
  292. Color myColor = selColor;
  293. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  294. Pen p = new Pen(myColor, 1);
  295. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  296. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  297. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  298. if (Shape == 0)
  299. {
  300. e.Graphics.DrawEllipse(p, m_RegionF);
  301. }
  302. else
  303. {
  304. var m_Region = new Rectangle();
  305. m_Region.X = (int)m_RegionF.X;
  306. m_Region.Y = (int)m_RegionF.Y;
  307. m_Region.Width = (int)m_RegionF.Width;
  308. m_Region.Height = (int)m_RegionF.Height;
  309. e.Graphics.DrawRectangle(p, m_Region);
  310. }
  311. }
  312. //绘制帧图 直线
  313. else if (createType == CreateRectangleType.SingleLine)
  314. {
  315. //设置颜色
  316. string ColorStr = OTSSamplespaceGraphicsPanelFun.GetColorValue(ColorType.SingleColor);
  317. Color myColor = ColorTranslator.FromHtml(ColorStr);
  318. //设置画笔
  319. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  320. Pen pen = new Pen(sampleBrush, 0.0001f);
  321. //未抗锯齿
  322. e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default;
  323. e.Graphics.InterpolationMode = InterpolationMode.Default;
  324. e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
  325. //设置直线位置与尺寸
  326. PointF startPointF = new PointF(startPoint.X, startPoint.Y);
  327. PointF endPointF = new PointF(endPoint.X, endPoint.Y);
  328. //度量单位
  329. e.Graphics.PageUnit = GraphicsUnit.Display;
  330. e.Graphics.DrawLine(pen, startPointF, endPointF);
  331. }
  332. //绘制标样
  333. else if (createType == CreateRectangleType.SpecimenRectangle)
  334. {
  335. Color myColor = System.Drawing.Color.Black;
  336. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  337. Pen pen = new Pen(sampleBrush, 0.0001f);
  338. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
  339. var m_Region = new Rectangle();
  340. m_Region.X = (int)m_RegionF.X;
  341. m_Region.Y = (int)m_RegionF.Y;
  342. m_Region.Width = (int)m_RegionF.Width;
  343. m_Region.Height = (int)m_RegionF.Height;
  344. e.Graphics.DrawRectangle(pen, m_Region);
  345. e.Graphics.FillRectangle(sampleBrush, m_Region);
  346. }
  347. //绘制标样
  348. else if (createType == CreateRectangleType.SpecimenCircle)
  349. {
  350. Color myColor = System.Drawing.Color.Black;
  351. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  352. Pen pen = new Pen(sampleBrush, 0.0001f);
  353. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
  354. e.Graphics.DrawEllipse(pen, m_RegionF);
  355. e.Graphics.FillEllipse(sampleBrush, m_RegionF);
  356. }
  357. //绘制帧图
  358. else if (createType == CreateRectangleType.FieldRectangle)
  359. {
  360. Color myColor = SelColor;
  361. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  362. Pen pen = new Pen(sampleBrush, 0.01f);
  363. e.Graphics.SmoothingMode = SmoothingMode.Default;
  364. //设置直线位置与尺寸
  365. PointF startPointF = new PointF(m_RegionF.Left, m_RegionF.Top);
  366. PointF endPointF = new PointF(m_RegionF.Right, m_RegionF.Bottom);
  367. //绘制帧图
  368. e.Graphics.DrawRectangle(pen, startPointF.X, startPointF.Y, endPointF.X - startPointF.X, endPointF.Y - startPointF.Y);
  369. }
  370. //绘制颗粒
  371. else if (createType == CreateRectangleType.ParticleLine)
  372. {
  373. Color myColor = LineColor;
  374. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  375. Pen pen = new Pen(sampleBrush, 0.01f);
  376. e.Graphics.SmoothingMode = SmoothingMode.Default;
  377. //设置直线位置与长度
  378. PointF startPointF = LineStartPoint;
  379. float length = LineLength;
  380. PointF endPointF = new PointF(startPointF.X + length, startPointF.Y);
  381. e.Graphics.DrawLine(pen, startPointF, endPointF);
  382. }
  383. //矩形
  384. else if (createType == CreateRectangleType.ParticleAreaRectangle)
  385. {
  386. Color myColor = System.Drawing.Color.White;
  387. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  388. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  389. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  390. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  391. var m_Region = new Rectangle();
  392. m_Region.X = (int)m_RegionF.X;
  393. m_Region.Y = (int)m_RegionF.Y;
  394. m_Region.Width = (int)m_RegionF.Width;
  395. m_Region.Height = (int)m_RegionF.Height;
  396. e.Graphics.DrawRectangle(Pens.Black, m_Region);
  397. }
  398. //绘制样品孔BSE图像
  399. else if (createType == CreateRectangleType.DrawSampleHoleBSEImage)
  400. {
  401. Color myColor = System.Drawing.Color.White;
  402. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  403. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  404. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  405. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  406. //设置直线位置与尺寸
  407. PointF startPointF = new PointF(m_RegionF.Left, m_RegionF.Top);
  408. PointF endPointF = new PointF(m_RegionF.Right + 2, m_RegionF.Bottom + 2);
  409. //绘制样品孔中图像信息
  410. if (BSEImage != null)
  411. {
  412. e.Graphics.DrawImage(BSEImage, startPointF.X, startPointF.Y, endPointF.X - startPointF.X, endPointF.Y - startPointF.Y);
  413. }
  414. }
  415. else if (createType == CreateRectangleType.DrawSEMCenterPoint)
  416. {
  417. Color myColor = System.Drawing.Color.Red;
  418. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  419. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  420. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  421. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  422. //X轴线
  423. PointF startPointX = semCenterPoint;
  424. startPointX.X = startPointX.X - 3;
  425. PointF endPointX = semCenterPoint;
  426. endPointX.X = endPointX.X + 3;
  427. //Y轴线
  428. PointF startPointY = semCenterPoint;
  429. startPointY.Y = startPointY.Y - 3;
  430. PointF endPointY = semCenterPoint;
  431. endPointY.Y = endPointY.Y + 3;
  432. //绘制XY轴交叉线+
  433. Pen pen = new Pen(sampleBrush, 0.0001f);
  434. e.Graphics.DrawLine(pen, startPointX, endPointX);
  435. e.Graphics.DrawLine(pen, startPointY, endPointY);
  436. }
  437. //绘制BSE标记
  438. else if (createType == CreateRectangleType.DrawBSEElementSignPoint)
  439. {
  440. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Green);
  441. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  442. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  443. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  444. Pen pen = new Pen(sampleBrush, 2f);
  445. int X = (int)m_OrigineRegionF.X;
  446. int Y = (int)m_OrigineRegionF.Y;
  447. e.Graphics.DrawLine(pen, new Point(X - 8, Y), new Point(X + 8, Y));
  448. e.Graphics.DrawLine(pen, new Point(X, Y - 8), new Point(X, Y + 8));
  449. }
  450. //绘制多边形测量区域
  451. else if (createType == CreateRectangleType.Polygon)
  452. {
  453. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  454. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  455. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  456. Color myColor = selColor;
  457. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  458. Pen pen = new Pen(myColor, 1);
  459. if (PolygonPointFList.Count > 1)
  460. {
  461. List<PointF> PolygonPointF = new List<PointF>();
  462. foreach (var item in m_PolygonPoints)
  463. {
  464. PolygonPointF.Add(item);
  465. }
  466. if (PolygonDrawingEndPoint.X != 0 && PolygonDrawingEndPoint.Y != 0)
  467. {
  468. PolygonPointF.Add(PolygonDrawingEndPoint);
  469. }
  470. e.Graphics.DrawLines(pen, PolygonPointF.ToArray());
  471. }
  472. }//多边形测量区域完成标识
  473. else if (createType == CreateRectangleType.DrawPolygonFinish)
  474. {
  475. Color myColor = selColor;
  476. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  477. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  478. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  479. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  480. Pen pen = new Pen(myColor, 1);
  481. var m_Region = new Rectangle();
  482. m_Region.X = (int)m_RegionF.X;
  483. m_Region.Y = (int)m_RegionF.Y;
  484. m_Region.Width = (int)m_RegionF.Width;
  485. m_Region.Height = (int)m_RegionF.Height;
  486. e.Graphics.DrawRectangle(pen, m_Region);
  487. }
  488. //绘制多边形测量区域
  489. else if (createType == CreateRectangleType.CircleByThreePoints)
  490. {
  491. Color myColor = selColor;
  492. System.Drawing.SolidBrush sampleBrush = new System.Drawing.SolidBrush(myColor);
  493. Pen p = new Pen(myColor, 1);
  494. e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; //图片柔顺模式选择
  495. e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;//高质量
  496. e.Graphics.CompositingQuality = CompositingQuality.HighQuality;//再加一点
  497. var m_Region = new Rectangle();
  498. m_Region.X = (int)m_RegionF.X;
  499. m_Region.Y = (int)m_RegionF.Y;
  500. m_Region.Width = (int)m_RegionF.Width;
  501. m_Region.Height = (int)m_RegionF.Height;
  502. e.Graphics.DrawEllipse(p, m_Region);
  503. }
  504. }
  505. public Image BSEImage
  506. {
  507. get { return bseImage; }
  508. set { bseImage = value; }
  509. }
  510. public float BSEImageWitdh
  511. {
  512. get { return bseImageWidth; }
  513. set { bseImageWidth = value; }
  514. }
  515. public float BSEImageHeight
  516. {
  517. get { return bseImageHeight; }
  518. set { bseImageHeight = value; }
  519. }
  520. public PointF BSEImageLocation
  521. {
  522. get { return bseImageLocation; }
  523. set { bseImageLocation = value; }
  524. }
  525. public Color LineColor
  526. {
  527. get { return lineColor; }
  528. set { lineColor = value; }
  529. }
  530. public float LineLength
  531. {
  532. get { return lineLength; }
  533. set { lineLength = value; }
  534. }
  535. public PointF LineStartPoint
  536. {
  537. get { return lineStartPoint; }
  538. set { lineStartPoint = value; }
  539. }
  540. public PointF SEMCenterPoint
  541. {
  542. get { return semCenterPoint; }
  543. set { semCenterPoint = value; }
  544. }
  545. public int OTSX
  546. {
  547. get { return otsX; }
  548. set { otsX = value; }
  549. }
  550. public int OTSY
  551. {
  552. get { return otsY; }
  553. set { otsY = value; }
  554. }
  555. public CreateRectangleType CreateType
  556. {
  557. get { return createType; }
  558. set { createType = value; }
  559. }
  560. public ShapeType Shape
  561. {
  562. get { return shape; }
  563. set { shape = value; }
  564. }
  565. public Color SelColor
  566. {
  567. get { return selColor; }
  568. set { selColor = value; }
  569. }
  570. public string Name
  571. {
  572. get { return name; }
  573. set { name = value; }
  574. }
  575. public string ID
  576. {
  577. get { return id; }
  578. set { id = value; }
  579. }
  580. public string SampleName
  581. {
  582. get { return sampleName; }
  583. set { sampleName = value; }
  584. }
  585. public int SampleCount
  586. {
  587. get { return sampleCount; }
  588. set { sampleCount = value; }
  589. }
  590. public string StrContent
  591. {
  592. get { return strContent; }
  593. set { strContent = value; }
  594. }
  595. public RectangleF GetZoomedRegion
  596. {
  597. get {
  598. var m_Region = new RectangleF();
  599. m_Region.X = m_RegionF.X;
  600. m_Region.Y = m_RegionF.Y;
  601. m_Region.Width = m_RegionF.Width;
  602. m_Region.Height = m_RegionF.Height;
  603. return m_Region;
  604. }
  605. }
  606. public RectangleF GetZoomedRegionF()
  607. {
  608. return m_RegionF;
  609. }
  610. public void SetInitRegionF(RectangleF OrigineRegionF)//not zoomed regine value
  611. {
  612. float x1, y1;
  613. x1 = OrigineRegionF.X * m_zoomNum + m_refPoint.X;
  614. y1 = OrigineRegionF.Y * m_zoomNum + m_refPoint.Y;
  615. float w1, h1;
  616. w1 = OrigineRegionF.Width * m_zoomNum;
  617. h1 = OrigineRegionF.Height * m_zoomNum;
  618. m_OrigineRegionF = OrigineRegionF;
  619. m_RegionF = new RectangleF(x1, y1, w1, h1);
  620. CreateRectangleType shape = this.CreateType;
  621. GraphicsPath MeasurePath = new GraphicsPath();
  622. if (shape == CreateRectangleType.Rectangle)
  623. {
  624. MeasurePath.AddRectangle(m_RegionF);
  625. }
  626. else
  627. {
  628. MeasurePath.AddEllipse(m_RegionF);
  629. }
  630. this.g_Path = MeasurePath;
  631. }
  632. internal void SetScaleRegionF(RectangleF scaleRectangleF)
  633. {
  634. float x1, y1;
  635. x1 = (scaleRectangleF.X-m_refPoint.X) / m_zoomNum ;
  636. y1 = (scaleRectangleF.Y-m_refPoint.Y) / m_zoomNum ;
  637. float w1, h1;
  638. w1 = scaleRectangleF.Width / m_zoomNum;
  639. h1 = scaleRectangleF.Height / m_zoomNum;
  640. m_OrigineRegionF = new RectangleF(x1, y1, w1, h1);
  641. m_RegionF = scaleRectangleF;
  642. CreateRectangleType shape = this.CreateType;
  643. GraphicsPath MeasurePath = new GraphicsPath();
  644. if (shape == CreateRectangleType.Rectangle)
  645. {
  646. MeasurePath.AddRectangle(m_RegionF);
  647. }
  648. else
  649. {
  650. MeasurePath.AddEllipse(m_RegionF);
  651. }
  652. this.g_Path = MeasurePath;
  653. }
  654. public RectangleF GetOrigionalDrawRegionF()
  655. { return m_OrigineRegionF; }
  656. public List<Point> PolygonPointRegion
  657. {
  658. get {
  659. var m_PolygonPointRegion = new List<Point>();
  660. foreach (var p in m_PolygonPoints)
  661. {
  662. m_PolygonPointRegion.Add(new Point((int)(p.X), (int)(p.Y)));
  663. }
  664. return m_PolygonPointRegion;
  665. }
  666. }
  667. public List<PointF> OriginalPolygonPointFList
  668. {
  669. get { return m_originalPolygonPoints; }
  670. }
  671. public List<PointF> PolygonPointFList
  672. {
  673. get { return m_PolygonPoints; }
  674. set {
  675. if (m_zoomNum != 1)
  676. {
  677. var ps = new List<PointF>();
  678. foreach (var p in value)
  679. {
  680. var p1 = new PointF();
  681. //x1 = (scaleRectangleF.X - m_refPoint.X) / m_zoomNum;
  682. //y1 = (scaleRectangleF.Y - m_refPoint.Y) / m_zoomNum;
  683. p1.X = (p.X -m_refPoint.X) / m_zoomNum;
  684. p1.Y = (p.Y - m_refPoint.Y) / m_zoomNum;
  685. ps.Add(p1);
  686. }
  687. m_originalPolygonPoints = ps;
  688. m_PolygonPoints = value;
  689. }
  690. else
  691. {
  692. m_originalPolygonPoints = value;
  693. m_PolygonPoints = value;
  694. }
  695. }
  696. }
  697. public GraphicsPath GPath
  698. {
  699. get {
  700. var measureItem = this;
  701. //重新绘制测量区域路径
  702. GraphicsPath GPath = new GraphicsPath();
  703. if (measureItem.CreateType == CreateRectangleType.Polygon)
  704. {
  705. GraphicsPath PolygonMeasurePath = new GraphicsPath();
  706. PolygonMeasurePath.AddPolygon(measureItem.PolygonPointFList.ToArray());
  707. GPath = PolygonMeasurePath;
  708. }
  709. else if (measureItem.CreateType == CreateRectangleType.CircleByThreePoints)
  710. {
  711. GPath.AddEllipse(GetZoomedRegionF());
  712. }
  713. else
  714. {
  715. if (measureItem.Shape == (int)CreateRectangleType.Circle)
  716. {
  717. GPath.AddEllipse(GetZoomedRegionF());
  718. }
  719. else
  720. {
  721. GPath.AddRectangle(GetZoomedRegionF());
  722. }
  723. }
  724. g_Path = GPath;
  725. return g_Path;
  726. }
  727. }
  728. public PointF PolygonDrawingEndPoint
  729. {
  730. get { return endPoint; }
  731. set { endPoint = value; }
  732. }
  733. public Point GetZoomedCenterPoint()
  734. {
  735. Point pCenterPoint = new Point();
  736. //获取在工作窗口中X,Y位置
  737. pCenterPoint.X = (int)(this.GetZoomedRegion.X + this.GetZoomedRegion.Width / 2);
  738. pCenterPoint.Y = (int)(this.GetZoomedRegion.Y + this.GetZoomedRegion.Height / 2);
  739. return pCenterPoint;
  740. }
  741. public Point GetCenterPoint()
  742. {
  743. Point pCenterPoint = new Point();
  744. //获取在工作窗口中X,Y位置
  745. pCenterPoint.X = (int)(this.GetOrigionalDrawRegionF().X + this.GetOrigionalDrawRegionF().Width / 2);
  746. pCenterPoint.Y = (int)(this.GetOrigionalDrawRegionF().Y + this.GetOrigionalDrawRegionF().Height / 2);
  747. return pCenterPoint;
  748. }
  749. #endregion
  750. public bool IsDragging
  751. {
  752. get { return m_IsDragging; }
  753. set { m_IsDragging = value; }
  754. }
  755. public bool IsAltering// moving position or changing the size by gui operating.
  756. {
  757. get { return m_IsAlter; }
  758. set { m_IsAlter = value; }
  759. }
  760. public bool IsWorkSample
  761. {
  762. get { return m_IsWorkSample; }
  763. set { m_IsWorkSample = value; }
  764. }
  765. public Point DraggingPoint
  766. {
  767. get { return m_DraggingPoint; }
  768. set { m_DraggingPoint = value; }
  769. }
  770. public PointF GetDisplayRefPoint()
  771. { return m_refPoint; }
  772. public void SetDisplayRefPoint(PointF value)
  773. {
  774. m_refPoint = value;
  775. SetInitRegionF(m_OrigineRegionF);
  776. if (m_originalPolygonPoints.Count != 0)
  777. {
  778. this.PolygonPointFList = m_originalPolygonPoints;
  779. }
  780. }
  781. public float GetZoomNumber()
  782. { return m_zoomNum; }
  783. public void SetZoomNumber(float value)
  784. {
  785. m_zoomNum = value;
  786. SetInitRegionF(m_OrigineRegionF);
  787. if (m_originalPolygonPoints.Count != 0)
  788. {
  789. this.PolygonPointFList = m_originalPolygonPoints;
  790. }
  791. }
  792. #region 画圆角矩形
  793. internal static GraphicsPath CreateRoundedRectanglePath(RectangleF rect, int cornerRadius)
  794. {
  795. GraphicsPath roundedRect = new GraphicsPath();
  796. roundedRect.AddArc(rect.X, rect.Y, cornerRadius * 2, cornerRadius * 2, 180, 90);
  797. roundedRect.AddLine(rect.X + cornerRadius, rect.Y, rect.Right - cornerRadius * 2, rect.Y);
  798. roundedRect.AddArc(rect.X + rect.Width - cornerRadius * 2, rect.Y, cornerRadius * 2, cornerRadius * 2, 270, 90);
  799. roundedRect.AddLine(rect.Right, rect.Y + cornerRadius * 2, rect.Right, rect.Y + rect.Height - cornerRadius * 2);
  800. roundedRect.AddArc(rect.X + rect.Width - cornerRadius * 2, rect.Y + rect.Height - cornerRadius * 2, cornerRadius * 2, cornerRadius * 2, 0, 90);
  801. roundedRect.AddLine(rect.Right - cornerRadius * 2, rect.Bottom, rect.X + cornerRadius * 2, rect.Bottom);
  802. roundedRect.AddArc(rect.X, rect.Bottom - cornerRadius * 2, cornerRadius * 2, cornerRadius * 2, 90, 90);
  803. roundedRect.AddLine(rect.X, rect.Bottom - cornerRadius * 2, rect.X, rect.Y + cornerRadius * 2);
  804. roundedRect.CloseFigure();
  805. return roundedRect;
  806. }
  807. public bool IfScaleContains(Point mousePoint)
  808. {
  809. if (mousePoint.X > m_RegionF.Left && mousePoint.X < m_RegionF.Left + m_RegionF.Width)
  810. {
  811. if (mousePoint.Y > m_RegionF.Top && mousePoint.Y < m_RegionF.Top + m_RegionF.Height)
  812. {
  813. return true;
  814. }
  815. }
  816. return false;
  817. }
  818. public bool IfContains(Point thePoint)
  819. {
  820. if (thePoint.X > m_OrigineRegionF.Left && thePoint.X < m_OrigineRegionF.Left + m_OrigineRegionF.Width)
  821. {
  822. if (thePoint.Y > m_OrigineRegionF.Top && thePoint.Y < m_OrigineRegionF.Top + m_OrigineRegionF.Height)
  823. {
  824. return true;
  825. }
  826. }
  827. return false;
  828. }
  829. public List<CRectangleGDIObject> SubItems()
  830. {
  831. if (subItems == null) subItems = new List<CRectangleGDIObject>();
  832. return subItems;
  833. }
  834. public void Zoom(PointF mousePoint, float zoomNum)
  835. {
  836. if (m_zoomNum == 1)
  837. {
  838. m_RegionF = m_OrigineRegionF;
  839. m_refPoint = new PointF(0, 0);
  840. m_PolygonPoints = m_originalPolygonPoints;
  841. }
  842. float curZoom = m_zoomNum;
  843. float deltaZoom = zoomNum - curZoom;
  844. float X1;
  845. float Y1;
  846. X1 = (m_RegionF.X - mousePoint.X) / curZoom * deltaZoom + m_RegionF.X;
  847. Y1 = (m_RegionF.Y - mousePoint.Y) / curZoom * deltaZoom + m_RegionF.Y;
  848. m_refPoint.X= (m_refPoint.X-mousePoint.X)/ curZoom * deltaZoom+m_refPoint.X;
  849. m_refPoint.Y = (m_refPoint.Y - mousePoint.Y) / curZoom * deltaZoom + m_refPoint.Y;
  850. float Width = GetOrigionalDrawRegionF().Width * zoomNum;
  851. float Height = GetOrigionalDrawRegionF().Height * zoomNum;
  852. m_RegionF = new RectangleF(X1, Y1, Width, Height);
  853. m_zoomNum = zoomNum;
  854. BSEImageWitdh = m_RegionF.Width;
  855. BSEImageHeight = m_RegionF.Height;
  856. BSEImageLocation = m_RegionF.Location;
  857. SEMCenterPoint = m_RegionF.Location;
  858. var scalePs = new List<PointF>();
  859. foreach (var p in m_PolygonPoints)
  860. {
  861. float x, y;
  862. x = (p.X - mousePoint.X) / curZoom * deltaZoom + p.X;
  863. y = (p.Y - mousePoint.Y) / curZoom * deltaZoom + p.Y;
  864. scalePs.Add(new PointF(x, y));
  865. }
  866. m_PolygonPoints = scalePs;
  867. if (this.subItems.Count != 0)
  868. {
  869. foreach (var g in subItems)
  870. {
  871. g.Zoom(mousePoint,zoomNum);
  872. }
  873. }
  874. }
  875. public void Move(PointF location)
  876. {
  877. PointF offset = new PointF(location.X - DraggingPoint.X, location.Y - DraggingPoint.Y);
  878. float X1;
  879. float Y1;
  880. X1 = (m_RegionF.X + offset.X);
  881. Y1 = (m_RegionF.Y + offset.Y);
  882. m_refPoint.X = m_refPoint.X + offset.X;
  883. m_refPoint.Y = m_refPoint.Y + offset.Y;
  884. m_RegionF = new RectangleF(X1, Y1, m_RegionF.Width, m_RegionF.Height);
  885. BSEImageWitdh = m_RegionF.Width;
  886. BSEImageHeight = m_RegionF.Height;
  887. BSEImageLocation = m_RegionF.Location;
  888. SEMCenterPoint = m_RegionF.Location;
  889. LineStartPoint = m_RegionF.Location;
  890. m_DraggingPoint = new Point((int)location.X,(int)location.Y);
  891. var scalePs = new List<PointF>();
  892. foreach (var p in m_PolygonPoints)
  893. {
  894. float x, y;
  895. x = (p.X + offset.X);
  896. y = (p.Y + offset.Y);
  897. scalePs.Add(new PointF(x, y));
  898. }
  899. m_PolygonPoints = scalePs;
  900. if (this.subItems.Count != 0)
  901. {
  902. foreach (var g in subItems)
  903. {
  904. g.Move(location);
  905. }
  906. }
  907. }
  908. public void Show(PointF location)
  909. {
  910. m_RegionF.Location = location;
  911. }
  912. public CRectangleGDIObject Duplicate(CreateRectangleType newType)
  913. {
  914. CRectangleGDIObject r = new CRectangleGDIObject();
  915. r.Name = this.name;
  916. r.SampleName = this.SampleName;
  917. r.m_OrigineRegionF = this.m_OrigineRegionF;
  918. r.IsWorkSample = this.IsWorkSample;
  919. //r.IsAltering = this.IsAltering;
  920. r.m_RegionF = this.m_RegionF;
  921. r.m_refPoint = this.m_refPoint;
  922. r.m_zoomNum = this.m_zoomNum;
  923. r.shape = this.shape;
  924. r.createType = newType;
  925. return r;
  926. }
  927. #endregion
  928. //是否设置为选择样品
  929. private bool m_IsAlter;
  930. //是否存在帧图信息
  931. //是否设置为拖动
  932. private bool m_IsDragging;
  933. //是否为工作样品
  934. private bool m_IsWorkSample;
  935. private CreateRectangleType createType;
  936. private ShapeType shape;
  937. private string id;
  938. private string name;
  939. public string sampleName;
  940. //样品孔中样品的数量
  941. public int sampleCount = 0;
  942. public string strContent;
  943. private Color selColor;
  944. private Point m_DraggingPoint;
  945. private RectangleF m_RegionF;
  946. //绘制时与移动缩放时记录的位置与尺寸
  947. private RectangleF m_OrigineRegionF;
  948. private GraphicsPath g_Path=new GraphicsPath();
  949. private PointF startPoint;
  950. private PointF endPoint;
  951. //绘制颗粒图
  952. private Color lineColor;
  953. private float lineLength;
  954. private PointF lineStartPoint;
  955. private int otsX;
  956. private int otsY;
  957. //绘制样品孔BSE图像
  958. private Image bseImage;
  959. //绘制样品孔BSE图像宽度
  960. private float bseImageWidth;
  961. //绘制样品孔BSE图像高度
  962. private float bseImageHeight;
  963. //绘制样品孔BSE图像位置
  964. private PointF bseImageLocation;
  965. //绘制SEM中心位置
  966. private PointF semCenterPoint;
  967. private List<PointF> m_PolygonPoints=new List<PointF>();
  968. //绘制时与移动缩放时记录的位置
  969. private List<PointF> m_originalPolygonPoints = new List<PointF>();
  970. private List<CRectangleGDIObject> subItems=new List<CRectangleGDIObject>();
  971. private float m_zoomNum=1;
  972. private PointF m_refPoint=new PointF(0,0);
  973. }
  974. public enum SEMControlIndex
  975. {
  976. Magnification=0,
  977. WorkingDistance=1
  978. }
  979. public enum XYIndex
  980. {
  981. X = 0,
  982. Y = 1
  983. }
  984. public enum CreateRectangleType
  985. {
  986. //样品台-圆形
  987. SampleBackGround_Circle = -1,
  988. //圆形
  989. Circle = 0,
  990. //圆角矩形
  991. SampleBackGround_Rectangle = 1,
  992. //样品孔中的文字
  993. Text = 2,
  994. //矩形
  995. Rectangle = 3,
  996. //选择的样品
  997. SelectSample = 4,
  998. //测量区域
  999. MeasureArea = 5,
  1000. //帧图-直线绘制方式
  1001. SingleLine = 6,
  1002. //表样-矩形
  1003. SpecimenRectangle = 7,
  1004. //表样-圆形
  1005. SpecimenCircle = 8,
  1006. //帧图-矩形绘制
  1007. FieldRectangle = 9,
  1008. //颗粒直线图
  1009. ParticleLine = 10,
  1010. //颗粒分布图 鼠标
  1011. ParticleAreaRectangle = 11,
  1012. //绘制拍摄样品孔BSE照片
  1013. DrawSampleHoleBSEImage = 12,
  1014. //绘制sem中心点+
  1015. DrawSEMCenterPoint=13,
  1016. //绘制BSE采集标记
  1017. DrawBSEElementSignPoint = 14,
  1018. //多边形
  1019. Polygon = 15,
  1020. //多边形完成标识
  1021. DrawPolygonFinish = 16,
  1022. //圆形三点法
  1023. CircleByThreePoints=17
  1024. }
  1025. public enum ContextMenuType
  1026. {
  1027. //样品孔右键菜单
  1028. SampleHoleMenu = 0,
  1029. //样品右键菜单
  1030. SampleMenu = 1,
  1031. //测量区域右键菜单
  1032. MeasureMenu = 2,
  1033. //线程运行后菜单
  1034. ThreadRunMenu = 3,
  1035. //样品台右键菜单
  1036. SampleStateMenu = 4,
  1037. //样品孔BSE图像
  1038. SampleHoleBSEImage = 5,
  1039. //帧图菜单
  1040. FieldMenu = 6
  1041. }
  1042. public enum MeasureStateMenuType
  1043. {
  1044. //获取BSE图
  1045. ReadBSEPic = 0,
  1046. //设置可视化灰度
  1047. SetVisualGray = 1,
  1048. //显示BSE灰度曲线图
  1049. SetVisualGrayForSpecialGray=2,
  1050. grayToolStripMenuItem =4,
  1051. //切换至BSE图
  1052. ChangeDiffImageShow = 5,
  1053. //BSE去背景图
  1054. DelBSEBG =6,
  1055. //显示BSE去背景灰度曲线图
  1056. SampleHoleBSEImage = 7,
  1057. //线扫描曲线
  1058. MenuItemLineScam = 9,
  1059. //单点采集Xray与元素信息
  1060. PointScanElementMenuItem = 10,
  1061. //导出采集信息报告
  1062. ExportReport =11
  1063. }
  1064. public enum MenuIndex
  1065. {
  1066. AddSample = 0,
  1067. DeleteSample = 1,
  1068. SampleStripSeparator = 2,
  1069. ReadSEMData = 3,
  1070. SetSemData = 4,
  1071. SetSEMCenterLocation = 5,
  1072. DriveSEMToCenterLocation = 6,
  1073. DriveSEMToCurrentLocation = 7,
  1074. SEMStripSeparator = 8,
  1075. ShootBSEPicture = 9,
  1076. DeleteBSEPicture = 10,
  1077. SlopFocus=11
  1078. }
  1079. public enum ColorType
  1080. {
  1081. SingleColor,//帧图fd8f8f
  1082. RoundRectangleColor,//c8c8c8圆角矩形
  1083. SampleBackGroundColor,//c0c0c0圆角矩形
  1084. FontColor,//90ee90文字颜色
  1085. SampleColor,//f4f4f4 样品未选择
  1086. SampleSelColor//505050 样品选择后
  1087. }
  1088. public enum GrayLevel
  1089. {
  1090. Min=0,
  1091. Max=255
  1092. }
  1093. }