MeasureActionMenu.cs 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365
  1. using Metis.Measuring;
  2. using PaintDotNet.Annotation.Enum;
  3. using PaintDotNet.Base;
  4. using PaintDotNet.Data.Param;
  5. using PaintDotNet.Measuring;
  6. using PaintDotNet.Preview2;
  7. using System;
  8. using System.Collections;
  9. using System.Collections.Generic;
  10. using System.Globalization;
  11. using System.Windows.Forms;
  12. namespace PaintDotNet.Menus
  13. {
  14. /// <summary>
  15. /// 图像测量菜单
  16. /// </summary>
  17. internal sealed class MeasureActionMenu : PdnMenuItem
  18. {
  19. public static ArrayList ArrayList1;
  20. public static ArrayList ArrayList2;
  21. public static ArrayList ArrayList3;
  22. public static bool InitKb = true;
  23. #region Menus
  24. private PdnMenuItem menuChoiseAction;
  25. private PdnMenuItem menuSelectAllAction;
  26. private PdnMenuItem menuContinuousDrawingAction;
  27. private PdnMenuItem menuClearAllAction;
  28. private ToolStripSeparator menuHelpSeparator1;
  29. private PdnMenuItem menuOpticalDensity;
  30. private PdnMenuItem menuBitmapAnalysis;
  31. private ToolStripSeparator menuHelpSeparator2;
  32. private PdnMenuItem menuLengthMeasurement;
  33. private PdnMenuItem menuMultiPointLineSegment;
  34. private PdnMenuItem menuCurveLength;
  35. private PdnMenuItem menuPointPerpendicular;
  36. private PdnMenuItem menuParallelLines;
  37. private PdnMenuItem menuPolygonMeasurement;
  38. private PdnMenuItem menuCircularMeasurement;
  39. private PdnMenuItem menuAngleMeasurement;
  40. private PdnMenuItem menuRegistrationMeasurement;
  41. private ToolStripSeparator menuHelpSeparator3;
  42. private PdnMenuItem menuRulerCalibration;
  43. private PdnMenuItem menuMeasureList;
  44. private PdnMenuItem menuTheoreticalScale;
  45. private PdnMenuItem menuGeometryMeasure;
  46. //标尺标定子菜单
  47. //标尺标定
  48. private PdnMenuItem menuSubRulerCalibration;
  49. //应用当前
  50. private PdnMenuItem menuSubApplyCurrent;
  51. //应用全部
  52. private PdnMenuItem menuSubApplyAll;
  53. //长度测量子菜单
  54. //直线
  55. private PdnMenuItem menuStraightLine;
  56. //长度
  57. private PdnMenuItem menuLengthLine;
  58. //水平线
  59. private PdnMenuItem menuHorizontalLine;
  60. //垂线
  61. private PdnMenuItem menuPerpendicular;
  62. //垂线
  63. private PdnMenuItem menuDistance;
  64. //多点线段子菜单
  65. //多点直线
  66. private PdnMenuItem menuMultipointStraightLine;
  67. //多点水平线
  68. private PdnMenuItem menuMultipointHorizontalLine;
  69. //多点线段
  70. private PdnMenuItem menuMultipointLineSegment1;
  71. //多点垂直线
  72. private PdnMenuItem menuMultipointVerticalLine;
  73. //曲线长度子菜单
  74. //折线
  75. private PdnMenuItem menuPolyline;
  76. //轨迹曲线
  77. private PdnMenuItem menuTraceCurve;
  78. //曲线
  79. private PdnMenuItem menuCurve;
  80. //点垂线子菜单
  81. //点垂线
  82. private PdnMenuItem menuPointVertical;
  83. //多点垂线
  84. private PdnMenuItem menuMultiPointVertical;
  85. //水平多点垂线
  86. private PdnMenuItem menuHorizontalMultipointVertical;
  87. //垂直多点垂线
  88. private PdnMenuItem menuVerticalMultipointVertical;
  89. //点到水平线距离
  90. private PdnMenuItem menuPointToHLine;
  91. //平行线测量子菜单
  92. //平行线
  93. private PdnMenuItem menuParallelLine;
  94. //多点平行线
  95. private PdnMenuItem menuMultipointParallel;
  96. //多点水平平行线
  97. private PdnMenuItem menuMultipointHorizontalParallelLines;
  98. //多点垂直平行线
  99. private PdnMenuItem menuMultipointVerticalParallelLines;
  100. //多边形测量子菜单
  101. //闭合曲线
  102. private PdnMenuItem menuClosedCurve;
  103. //多边形
  104. private PdnMenuItem menuPolygon;
  105. //矩形
  106. private PdnMenuItem menuRectangle;
  107. //任意矩形
  108. private PdnMenuItem menuArbitraryRectangle;
  109. //正方形
  110. private PdnMenuItem menuSquare;
  111. //任意正方形
  112. private PdnMenuItem menuArbitrarySquare;
  113. //轨迹多边形
  114. private PdnMenuItem menuTrackPolygon;
  115. //圆形测量子菜单
  116. //三点圆
  117. private PdnMenuItem menuThreePointCircle;
  118. //向内画圆
  119. private PdnMenuItem menuDrawCircleInward;
  120. //向外画圆
  121. private PdnMenuItem menuDrawCircleOutward;
  122. //直径画圆
  123. private PdnMenuItem menuDiameterCircle;
  124. //点到圆距离
  125. private PdnMenuItem menuPointToCircleDistance;
  126. //点到圆心距离
  127. private PdnMenuItem menuPointToCenterDistance;
  128. //点到圆弧距离
  129. private PdnMenuItem menuPointToArcDistance;
  130. //角度测量子菜单
  131. //三点角度
  132. private PdnMenuItem menuThreePointAngle;
  133. //四点角度
  134. private PdnMenuItem menuFourPointAngle;
  135. //三点弧
  136. private PdnMenuItem menuThreePointArc;
  137. // 对准度测量子菜单
  138. //圆心到圆心距离
  139. private PdnMenuItem menuCenterToCenterDistance;
  140. //两线中垂线距离
  141. private PdnMenuItem menuTwoLineVLDistance;
  142. #endregion
  143. public static Preview2Dialog _p2Form => Preview2Dialog.Instance;
  144. /// <summary>
  145. /// 图像测量
  146. /// </summary>
  147. public MeasureActionMenu(int menuId)
  148. {
  149. InitializeComponent();
  150. this.MenuId = menuId;
  151. this.AutomaticScript = false;
  152. }
  153. protected override void OnAppWorkspaceChanged()
  154. {
  155. base.OnAppWorkspaceChanged();
  156. }
  157. private void InitializeComponent()
  158. {
  159. this.menuChoiseAction = new PdnMenuItem(ActionType.MeasureSelect);
  160. this.menuSelectAllAction = new PdnMenuItem(ActionType.SelectAllMeasure);
  161. this.menuContinuousDrawingAction = new PdnMenuItem(ActionType.ContinuousDrawingMeasure, true);
  162. this.menuClearAllAction = new PdnMenuItem(ActionType.ClearAllMeasure);
  163. this.menuHelpSeparator1 = new ToolStripSeparator();
  164. this.menuOpticalDensity = new PdnMenuItem(ActionType.OpticalDensity);
  165. this.menuBitmapAnalysis = new PdnMenuItem(ActionType.BitmapAnalysis);
  166. this.menuHelpSeparator2 = new ToolStripSeparator();
  167. this.menuLengthMeasurement = new PdnMenuItem(ActionType.LengthMeasurement);
  168. this.menuMultiPointLineSegment = new PdnMenuItem(ActionType.MultiPointLineSegment);
  169. this.menuCurveLength = new PdnMenuItem(ActionType.CurveLength);
  170. this.menuPointPerpendicular = new PdnMenuItem(ActionType.PointPerpendicular);
  171. this.menuParallelLines = new PdnMenuItem(ActionType.ParallelLines);
  172. this.menuPolygonMeasurement = new PdnMenuItem(ActionType.PolygonMeasurement);
  173. this.menuCircularMeasurement = new PdnMenuItem(ActionType.CircularMeasurement);
  174. this.menuAngleMeasurement = new PdnMenuItem(ActionType.AngleMeasurement);
  175. this.menuRegistrationMeasurement = new PdnMenuItem(ActionType.RegistrationMeasurement);
  176. this.menuHelpSeparator3 = new ToolStripSeparator();
  177. this.menuMeasureList = new PdnMenuItem(ActionType.MeasureList);
  178. this.menuRulerCalibration = new PdnMenuItem(ActionType.RulerCalibration);
  179. this.menuTheoreticalScale = new PdnMenuItem(ActionType.TheoreticalScale);
  180. this.menuSubRulerCalibration = new PdnMenuItem(ActionType.SubRulerCalibration);
  181. this.menuSubApplyCurrent = new PdnMenuItem(ActionType.SubApplyCurrent);
  182. this.menuSubApplyAll = new PdnMenuItem(ActionType.SubApplyAll);
  183. this.menuStraightLine = new PdnMenuItem(ActionType.StraightLine);
  184. this.menuLengthLine = new PdnMenuItem(ActionType.LengthLine);
  185. this.menuHorizontalLine = new PdnMenuItem(ActionType.HorizontalLine);
  186. this.menuPerpendicular = new PdnMenuItem(ActionType.Perpendicular);
  187. this.menuDistance = new PdnMenuItem(ActionType.StraightDistanceLine);
  188. this.menuMultipointStraightLine = new PdnMenuItem(ActionType.MultipointStraightLine);
  189. this.menuMultipointHorizontalLine = new PdnMenuItem(ActionType.MultipointLineSegment1);
  190. this.menuMultipointLineSegment1 = new PdnMenuItem(ActionType.MultipointHorizontalLine);
  191. this.menuMultipointVerticalLine = new PdnMenuItem(ActionType.MultipointVerticalLine);
  192. this.menuPolyline = new PdnMenuItem(ActionType.Polyline);
  193. this.menuCurve = new PdnMenuItem(ActionType.Curve);
  194. this.menuTraceCurve = new PdnMenuItem(ActionType.TraceCurve);
  195. this.menuPointVertical = new PdnMenuItem(ActionType.PointVertical);
  196. this.menuMultiPointVertical = new PdnMenuItem(ActionType.MultiPointVertical);
  197. this.menuHorizontalMultipointVertical = new PdnMenuItem(ActionType.HorizontalMultipointVertical);
  198. this.menuVerticalMultipointVertical = new PdnMenuItem(ActionType.VerticalMultipointVertical);
  199. this.menuPointToHLine = new PdnMenuItem(ActionType.menuPointToHLine);
  200. this.menuParallelLine = new PdnMenuItem(ActionType.ParallelLine);
  201. this.menuMultipointParallel = new PdnMenuItem(ActionType.MultipointParallel);
  202. this.menuMultipointHorizontalParallelLines = new PdnMenuItem(ActionType.MultipointHorizontalParallelLines);
  203. this.menuMultipointVerticalParallelLines = new PdnMenuItem(ActionType.MultipointVerticalParallelLines);
  204. this.menuClosedCurve = new PdnMenuItem(ActionType.ClosedCurve);
  205. this.menuPolygon = new PdnMenuItem(ActionType.Polygon);
  206. this.menuRectangle = new PdnMenuItem(ActionType.Rectangle);
  207. this.menuArbitraryRectangle = new PdnMenuItem(ActionType.ArbitraryRectangle);
  208. this.menuSquare = new PdnMenuItem(ActionType.Square);
  209. this.menuArbitrarySquare = new PdnMenuItem(ActionType.ArbitrarySquare);
  210. this.menuTrackPolygon = new PdnMenuItem(ActionType.TrackPolygon);
  211. this.menuThreePointCircle = new PdnMenuItem(ActionType.ThreePointCircle);
  212. this.menuDrawCircleInward = new PdnMenuItem(ActionType.DrawCircleInward);
  213. this.menuDrawCircleOutward = new PdnMenuItem(ActionType.DrawCircleOutward);
  214. this.menuDiameterCircle = new PdnMenuItem(ActionType.DiameterCircle);
  215. this.menuPointToCircleDistance = new PdnMenuItem(ActionType.PointToCircleDistance);
  216. this.menuPointToCenterDistance = new PdnMenuItem(ActionType.PointToCenterDistance);
  217. this.menuPointToArcDistance = new PdnMenuItem(ActionType.PointToArcDistance);
  218. this.menuThreePointAngle = new PdnMenuItem(ActionType.ThreePointAngle);
  219. this.menuFourPointAngle = new PdnMenuItem(ActionType.FourPointAngle);
  220. this.menuThreePointArc = new PdnMenuItem(ActionType.ThreePointArc);
  221. this.menuCenterToCenterDistance = new PdnMenuItem(ActionType.CenterToCenterDistance);
  222. this.menuTwoLineVLDistance = new PdnMenuItem(ActionType.TwoLineVLDistance);
  223. this.menuGeometryMeasure = new PdnMenuItem(ActionType.GeometryMeasure);
  224. //
  225. // 主菜单
  226. //
  227. this.DropDownItems.AddRange(new ToolStripItem[] {
  228. this.menuChoiseAction,
  229. this.menuSelectAllAction,
  230. this.menuContinuousDrawingAction,
  231. this.menuClearAllAction,
  232. this.menuHelpSeparator1,
  233. this.menuOpticalDensity,
  234. this.menuBitmapAnalysis,
  235. this.menuHelpSeparator2,
  236. this.menuLengthMeasurement,
  237. this.menuMultiPointLineSegment,
  238. this.menuCurveLength,
  239. this.menuCircularMeasurement,
  240. this.menuAngleMeasurement,
  241. this.menuRegistrationMeasurement,
  242. this.menuPointPerpendicular,
  243. this.menuParallelLines,
  244. this.menuPolygonMeasurement,
  245. this.menuHelpSeparator3,
  246. this.menuMeasureList,
  247. this.menuRulerCalibration,
  248. this.menuTheoreticalScale,
  249. this.menuGeometryMeasure
  250. });
  251. this.Name = "Menu.MeasureAction";
  252. this.Text = PdnResources.GetString("Menu.MeasureAction.Text");
  253. //
  254. // 选择
  255. //
  256. this.menuChoiseAction.NeedWaitKey = true;
  257. this.menuChoiseAction.Click += new EventHandler(MenuChoiseAction_Click);
  258. //
  259. // 全选
  260. //
  261. this.menuSelectAllAction.NeedWaitKey = true;
  262. this.menuSelectAllAction.Click += new EventHandler(MenuSelectAllAction_Click);
  263. //
  264. // 连续绘制
  265. //
  266. this.menuContinuousDrawingAction.NeedWaitKey = true;
  267. this.menuContinuousDrawingAction.Click += new EventHandler(MenuContinuousDrawingAction_Click);
  268. //
  269. // 清空元素
  270. //
  271. this.menuClearAllAction.Click += new EventHandler(MenuClearAllAction_Click);
  272. //
  273. // 光密度
  274. //
  275. this.menuOpticalDensity.NeedWaitKey = true;
  276. this.menuOpticalDensity.Click += new EventHandler(MenuOpticalDensity_Click);
  277. //
  278. // 位图分析
  279. //
  280. this.menuBitmapAnalysis.Click += new EventHandler(BitmapAnalysis_Click);
  281. //
  282. // 长度测量
  283. //
  284. this.menuLengthMeasurement.DropDownItems.AddRange(new ToolStripItem[] {
  285. this.menuStraightLine,
  286. this.menuLengthLine,
  287. this.menuHorizontalLine,
  288. this.menuPerpendicular,
  289. this.menuDistance
  290. });
  291. //
  292. // 多点线段
  293. //
  294. this.menuMultiPointLineSegment.DropDownItems.AddRange(new ToolStripItem[] {
  295. this.menuMultipointStraightLine,
  296. this.menuMultipointLineSegment1,
  297. this.menuMultipointHorizontalLine,
  298. this.menuMultipointVerticalLine
  299. });
  300. //
  301. // 曲线长度
  302. //
  303. this.menuCurveLength.DropDownItems.AddRange(new ToolStripItem[] {
  304. this.menuPolyline,
  305. this.menuCurve,
  306. this.menuTraceCurve
  307. });
  308. //
  309. // 点垂线测量
  310. //
  311. this.menuPointPerpendicular.DropDownItems.AddRange(new ToolStripItem[] {
  312. this.menuPointVertical,
  313. this.menuMultiPointVertical,
  314. this.menuHorizontalMultipointVertical,
  315. this.menuVerticalMultipointVertical,
  316. this.menuPointToHLine
  317. });
  318. //
  319. // 平行线测量
  320. //
  321. this.menuParallelLines.DropDownItems.AddRange(new ToolStripItem[] {
  322. this.menuParallelLine,
  323. this.menuMultipointParallel,
  324. this.menuMultipointHorizontalParallelLines,
  325. this.menuMultipointVerticalParallelLines
  326. });
  327. //
  328. // 多边形测量
  329. //
  330. this.menuPolygonMeasurement.DropDownItems.AddRange(new ToolStripItem[] {
  331. this.menuClosedCurve,
  332. this.menuPolygon,
  333. this.menuRectangle,
  334. this.menuArbitraryRectangle,
  335. this.menuSquare,
  336. this.menuArbitrarySquare,
  337. this.menuTrackPolygon
  338. });
  339. //
  340. // 圆形测量
  341. //
  342. this.menuCircularMeasurement.DropDownItems.AddRange(new ToolStripItem[] {
  343. this.menuThreePointCircle,
  344. this.menuDrawCircleInward,
  345. this.menuDrawCircleOutward,
  346. this.menuDiameterCircle,
  347. this.menuPointToCircleDistance,
  348. this.menuPointToCenterDistance,
  349. this.menuPointToArcDistance
  350. });
  351. //
  352. // 角度测量
  353. //
  354. this.menuAngleMeasurement.DropDownItems.AddRange(new ToolStripItem[] {
  355. this.menuThreePointAngle,
  356. this.menuFourPointAngle,
  357. this.menuThreePointArc
  358. });
  359. this.menuRegistrationMeasurement.Image = PdnResources.GetImageResource("Icons.MenuMeasureRegistrationMeasurementIcon.png").Reference;
  360. this.menuRegistrationMeasurement.DropDownItems.AddRange(new ToolStripItem[] {
  361. this.menuCenterToCenterDistance,
  362. this.menuTwoLineVLDistance
  363. });
  364. //
  365. // 标尺标定
  366. //
  367. //this.menuRulerCalibration.NeedWaitKey = true;
  368. this.menuRulerCalibration.DropDownItems.AddRange(new ToolStripItem[] {
  369. this.menuSubRulerCalibration,
  370. this.menuSubApplyCurrent,
  371. this.menuSubApplyAll
  372. });
  373. //this.menuRulerCalibration.Click += new EventHandler(MenuRulerCalibration_Click);
  374. //
  375. // 测量列表
  376. //
  377. this.menuMeasureList.NeedWaitKey = true;
  378. this.menuMeasureList.Click += new EventHandler(MenuMeasureList_Click);
  379. //
  380. // 理论比例尺
  381. //
  382. this.menuTheoreticalScale.Click += new EventHandler(TheoreticalScale_Click);
  383. //
  384. // 以下是子菜单
  385. //
  386. //
  387. // 标尺标定(子菜单)
  388. //
  389. this.menuSubRulerCalibration.Text = PdnResources.GetString("Menu.MeasureAction.RulerCalibration.Text");
  390. this.menuSubRulerCalibration.NeedWaitKey = true;
  391. this.menuSubRulerCalibration.Click += new EventHandler(MenuRulerCalibration_Click);
  392. this.menuSubRulerCalibration.Image = PdnResources.GetImageResource("Icons.MenuRulerCalibration.png").Reference;
  393. //
  394. // 应用当前
  395. //
  396. this.menuSubApplyCurrent.Text = PdnResources.GetString("Menu.Imagement.Rulersetting.current.text");
  397. this.menuSubApplyCurrent.NeedWaitKey = true;
  398. this.menuSubApplyCurrent.Click += new EventHandler(MenuSubApplyCurrent_Click);
  399. this.menuSubApplyCurrent.Image = PdnResources.GetImageResource("Icons.MenuNow.png").Reference;
  400. //
  401. // 应用全部
  402. //
  403. this.menuSubApplyAll.Text = PdnResources.GetString("Menu.Binaryoperation.Binaryextraction.Applytoall.text");
  404. this.menuSubApplyAll.NeedWaitKey = true;
  405. this.menuSubApplyAll.Click += new EventHandler(MenuSubApplyAll_Click);
  406. this.menuSubApplyAll.Image = PdnResources.GetImageResource("Icons.MenuAll.png").Reference;
  407. //
  408. // 直线
  409. //
  410. this.menuStraightLine.Text = PdnResources.GetString("Menu.MeasureAction.MeasureLine.Text");
  411. this.menuStraightLine.NeedWaitKey = true;
  412. this.menuStraightLine.Click += new EventHandler(MenuStraightLine_Click);
  413. this.menuStraightLine.Image = PdnResources.GetImageResource("Icons.MenuMeasureLineIcon.png").Reference;
  414. //
  415. //
  416. // 距离
  417. //
  418. this.menuDistance.Text = PdnResources.GetString("Menu.MeasureAction.MeasureDistanceLine.Text");
  419. this.menuDistance.NeedWaitKey = true;
  420. this.menuDistance.Click += new EventHandler(MenuDistance_Click);
  421. this.menuDistance.Image = PdnResources.GetImageResource("Icons.MenuMeasureLineIcon.png").Reference;
  422. //
  423. // 长度
  424. //
  425. this.menuLengthLine.Text = PdnResources.GetString("Menu.MeasureAction.MeasureLength.Text");
  426. this.menuLengthLine.NeedWaitKey = true;
  427. this.menuLengthLine.Click += new EventHandler(MenuLengthLine_Click);
  428. this.menuLengthLine.Image = PdnResources.GetImageResource("Icons.MenuMeasureLengthIcon.png").Reference;
  429. //
  430. // 水平线
  431. //
  432. this.menuHorizontalLine.Text = PdnResources.GetString("Menu.MeasureAction.MeasureHLine.Text");
  433. this.menuHorizontalLine.NeedWaitKey = true;
  434. this.menuHorizontalLine.Click += new EventHandler(MenuHorizontalLine_Click);
  435. this.menuHorizontalLine.Image = PdnResources.GetImageResource("Icons.MenuMeasureHLineIcon.png").Reference;
  436. //
  437. // 垂线
  438. //
  439. this.menuPerpendicular.Text = PdnResources.GetString("Menu.MeasureAction.MeasureVLine.Text");
  440. this.menuPerpendicular.NeedWaitKey = true;
  441. this.menuPerpendicular.Click += new EventHandler(MenuPerpendicular_Click);
  442. this.menuPerpendicular.Image = PdnResources.GetImageResource("Icons.MenuMeasureVLineIcon.png").Reference;
  443. //
  444. // 多点直线
  445. //
  446. this.menuMultipointStraightLine.Text = PdnResources.GetString("Menu.MeasureAction.MeasureMulLine.Text");
  447. this.menuMultipointStraightLine.NeedWaitKey = true;
  448. this.menuMultipointStraightLine.Click += new EventHandler(menuMultipointStraightLine_Click);
  449. this.menuMultipointStraightLine.Image = PdnResources.GetImageResource("Icons.MenuMeasureMulLineIcon.png").Reference;
  450. //
  451. // 多点水平线
  452. //
  453. this.menuMultipointHorizontalLine.Text = PdnResources.GetString("Menu.MeasureAction.MeasureMulHVLine.Text");
  454. this.menuMultipointHorizontalLine.NeedWaitKey = true;
  455. this.menuMultipointHorizontalLine.Click += new EventHandler(menuMultipointHorizontalLine_Click);
  456. this.menuMultipointHorizontalLine.Image = PdnResources.GetImageResource("Icons.MenuMeasureMulHVLineIcon.png").Reference;
  457. //
  458. // 多点线段
  459. //
  460. this.menuMultipointLineSegment1.Text = PdnResources.GetString("Menu.MeasureAction.MeasureMulSegment.Text");
  461. this.menuMultipointLineSegment1.NeedWaitKey = true;
  462. this.menuMultipointLineSegment1.Click += new EventHandler(menuMultipointLineSegment1_Click);
  463. this.menuMultipointLineSegment1.Image = PdnResources.GetImageResource("Icons.MenuMeasureMulSegmentIcon.png").Reference;
  464. //
  465. // 多点垂直线
  466. //
  467. this.menuMultipointVerticalLine.Text = PdnResources.GetString("Menu.MeasureAction.MeasureMulVLine.Text");
  468. this.menuMultipointVerticalLine.NeedWaitKey = true;
  469. this.menuMultipointVerticalLine.Click += new EventHandler(menuMultipointVerticalLine_Click);
  470. this.menuMultipointVerticalLine.Image = PdnResources.GetImageResource("Icons.MenuMeasureMulVLineIcon.png").Reference;
  471. //
  472. // 折线
  473. //
  474. this.menuPolyline.Text = PdnResources.GetString("Menu.MeasureAction.MeasureBrokenLine.Text");
  475. this.menuPolyline.NeedWaitKey = true;
  476. this.menuPolyline.Click += new EventHandler(MenuPolyline_Click);
  477. this.menuPolyline.Image = PdnResources.GetImageResource("Icons.MenuMeasureBrokenLineIcon.png").Reference;
  478. //
  479. // 轨迹曲线
  480. //
  481. this.menuTraceCurve.Text = PdnResources.GetString("Menu.MeasureAction.MeasureTraceCurve.Text");
  482. this.menuTraceCurve.NeedWaitKey = true;
  483. this.menuTraceCurve.Click += new EventHandler(MenuTraceCurve_Click);
  484. this.menuTraceCurve.Image = PdnResources.GetImageResource("Icons.MenuMeasureTraceCurveIcon.png").Reference;
  485. //
  486. // 曲线
  487. //
  488. this.menuCurve.Text = PdnResources.GetString("Menu.MeasureAction.MeasureCurveLine.Text");
  489. this.menuCurve.NeedWaitKey = true;
  490. this.menuCurve.Click += new EventHandler(MenuCurve_Click);
  491. this.menuCurve.Image = PdnResources.GetImageResource("Icons.MenuMeasureCurveLineIcon.png").Reference;
  492. //
  493. // 点垂线
  494. //
  495. this.menuPointVertical.Text = PdnResources.GetString("Menu.MeasureAction.MeasurePLine.Text");
  496. this.menuPointVertical.NeedWaitKey = true;
  497. this.menuPointVertical.Click += new EventHandler(menuPointVertical_Click);
  498. this.menuPointVertical.Image = PdnResources.GetImageResource("Icons.MenuMeasurePLineIcon.png").Reference;
  499. //
  500. // 多点垂线
  501. //
  502. this.menuMultiPointVertical.Text = PdnResources.GetString("Menu.MeasureAction.MeasureMulPLine.Text");
  503. this.menuMultiPointVertical.NeedWaitKey = true;
  504. this.menuMultiPointVertical.Click += new EventHandler(menuMultiPointVertical_Click);
  505. this.menuMultiPointVertical.Image = PdnResources.GetImageResource("Icons.MenuMeasureMulPLineIcon.png").Reference;
  506. //
  507. // 水平多点垂线
  508. //
  509. this.menuHorizontalMultipointVertical.Text = PdnResources.GetString("Menu.MeasureAction.MeasureHMulPLine.Text");
  510. this.menuHorizontalMultipointVertical.NeedWaitKey = true;
  511. this.menuHorizontalMultipointVertical.Click += new EventHandler(menuHorizontalMultipointVertical_Click);
  512. this.menuHorizontalMultipointVertical.Image = PdnResources.GetImageResource("Icons.MenuMeasureHMulPLineIcon.png").Reference;
  513. //
  514. // 垂直多点垂线
  515. //
  516. this.menuVerticalMultipointVertical.Text = PdnResources.GetString("Menu.MeasureAction.MeasureVMulPLine.Text");
  517. this.menuVerticalMultipointVertical.NeedWaitKey = true;
  518. this.menuVerticalMultipointVertical.Click += new EventHandler(menuVerticalMultipointVertical_Click);
  519. this.menuVerticalMultipointVertical.Image = PdnResources.GetImageResource("Icons.MenuMeasureVMulPLineIcon.png").Reference;
  520. //
  521. //
  522. //点到水平线距离
  523. //
  524. this.menuPointToHLine.Text = PdnResources.GetString("Menu.MeasureAction.MeasurePointHLine.Text");
  525. this.menuPointToHLine.NeedWaitKey = true;
  526. this.menuPointToHLine.Click += new EventHandler(menuMultiPointToHLine_Click);
  527. this.menuPointToHLine.Image = PdnResources.GetImageResource("Icons.MenuMeasurePLineIcon.png").Reference;
  528. // 平行线
  529. //
  530. this.menuParallelLine.Text = PdnResources.GetString("Menu.MeasureAction.MeasureParallelLine.Text");
  531. this.menuParallelLine.NeedWaitKey = true;
  532. this.menuParallelLine.Click += new EventHandler(menuParallelLine_Click);
  533. this.menuParallelLine.Image = PdnResources.GetImageResource("Icons.MenuMeasureParallelLineIcon.png").Reference;
  534. //
  535. // 多点平行线
  536. //
  537. this.menuMultipointParallel.Text = PdnResources.GetString("Menu.MeasureAction.MeasureMulParallelLine.Text");
  538. this.menuMultipointParallel.NeedWaitKey = true;
  539. this.menuMultipointParallel.Click += new EventHandler(menuMultipointParallel_Click);
  540. this.menuMultipointParallel.Image = PdnResources.GetImageResource("Icons.MenuMeasureMulParallelLineIcon.png").Reference;
  541. //
  542. // 水平多点平行线
  543. //
  544. this.menuMultipointHorizontalParallelLines.Text = PdnResources.GetString("Menu.MeasureAction.MeasureHMulParallelLine.Text");
  545. this.menuMultipointHorizontalParallelLines.NeedWaitKey = true;
  546. this.menuMultipointHorizontalParallelLines.Click += new EventHandler(menuMultipointHorizontalParallelLines_Click);
  547. this.menuMultipointHorizontalParallelLines.Image = PdnResources.GetImageResource("Icons.MenuMeasureHMulParallelLineIcon.png").Reference;
  548. //
  549. // 垂直多点平行线
  550. //
  551. this.menuMultipointVerticalParallelLines.Text = PdnResources.GetString("Menu.MeasureAction.MeasureVMulParallelLine.Text");
  552. this.menuMultipointVerticalParallelLines.NeedWaitKey = true;
  553. this.menuMultipointVerticalParallelLines.Click += new EventHandler(menuMultipointVerticalParallelLines_Click);
  554. this.menuMultipointVerticalParallelLines.Image = PdnResources.GetImageResource("Icons.MenuMeasureVMulParallelLineIcon.png").Reference;
  555. //
  556. // 闭合曲线
  557. //
  558. this.menuClosedCurve.Text = PdnResources.GetString("Menu.MeasureAction.MeasureClosedCurve.Text");
  559. this.menuClosedCurve.NeedWaitKey = true;
  560. this.menuClosedCurve.Click += new EventHandler(menuClosedCurve_Click);
  561. this.menuClosedCurve.Image = PdnResources.GetImageResource("Icons.MenuMeasureClosedCurveIcon.png").Reference;
  562. //
  563. // 多边形
  564. //
  565. this.menuPolygon.Text = PdnResources.GetString("Menu.MeasureAction.MeasurePolygon.Text");
  566. this.menuPolygon.NeedWaitKey = true;
  567. this.menuPolygon.Click += new EventHandler(menuPolygon_Click);
  568. this.menuPolygon.Image = PdnResources.GetImageResource("Icons.MenuMeasurePolygonIcon.png").Reference;
  569. //
  570. // 矩形
  571. //
  572. this.menuRectangle.Text = PdnResources.GetString("Menu.MeasureAction.MeasureRectangle.Text");
  573. this.menuRectangle.NeedWaitKey = true;
  574. this.menuRectangle.Click += new EventHandler(menuRectangle_Click);
  575. this.menuRectangle.Image = PdnResources.GetImageResource("Icons.MenuMeasureRectangleIcon.png").Reference;
  576. //
  577. // 任意矩形
  578. //
  579. this.menuArbitraryRectangle.Text = PdnResources.GetString("Menu.MeasureAction.MeasureRandRectangle.Text");
  580. this.menuArbitraryRectangle.NeedWaitKey = true;
  581. this.menuArbitraryRectangle.Click += new EventHandler(menuArbitraryRectangle_Click);
  582. this.menuArbitraryRectangle.Image = PdnResources.GetImageResource("Icons.MenuMeasureRandRectangleIcon.png").Reference;
  583. //
  584. // 正方形
  585. //
  586. this.menuSquare.Text = PdnResources.GetString("Menu.MeasureAction.MeasureSquare.Text");
  587. this.menuSquare.NeedWaitKey = true;
  588. this.menuSquare.Click += new EventHandler(menuSquare_Click);
  589. this.menuSquare.Image = PdnResources.GetImageResource("Icons.MenuMeasureSquareIcon.png").Reference;
  590. //
  591. // 任意正方形
  592. //
  593. this.menuArbitrarySquare.Text = PdnResources.GetString("Menu.MeasureAction.MeasureRandSquare.Text");
  594. this.menuArbitrarySquare.NeedWaitKey = true;
  595. this.menuArbitrarySquare.Click += new EventHandler(menuArbitrarySquare_Click);
  596. this.menuArbitrarySquare.Image = PdnResources.GetImageResource("Icons.MenuMeasureRandSquareIcon.png").Reference;
  597. //
  598. // 轨迹多边形
  599. //
  600. this.menuTrackPolygon.Text = PdnResources.GetString("Menu.MeasureAction.MeasureTracePolygon.Text");
  601. this.menuTrackPolygon.NeedWaitKey = true;
  602. this.menuTrackPolygon.Click += new EventHandler(menuTrackPolygon_Click);
  603. this.menuTrackPolygon.Image = PdnResources.GetImageResource("Icons.MenuMeasureTracePolygonIcon.png").Reference;
  604. //
  605. // 三点圆
  606. //
  607. this.menuThreePointCircle.Text = PdnResources.GetString("Menu.MeasureAction.MeasureCircle.Text");
  608. this.menuThreePointCircle.NeedWaitKey = true;
  609. this.menuThreePointCircle.Click += new EventHandler(MenuThreePointCircle_Click);
  610. this.menuThreePointCircle.Image = PdnResources.GetImageResource("Icons.MenuMeasureCircleIcon.png").Reference;
  611. //
  612. // 向内画圆
  613. //
  614. this.menuDrawCircleInward.Text = PdnResources.GetString("Menu.MeasureAction.MeasureInnerCircle.Text");
  615. this.menuDrawCircleInward.NeedWaitKey = true;
  616. this.menuDrawCircleInward.Click += new EventHandler(MenuDrawCircleInward_Click);
  617. this.menuDrawCircleInward.Image = PdnResources.GetImageResource("Icons.MenuMeasureInnerCircleIcon.png").Reference;
  618. //
  619. // 向外画圆
  620. //
  621. this.menuDrawCircleOutward.Text = PdnResources.GetString("Menu.MeasureAction.MeasureOuterCircle.Text");
  622. this.menuDrawCircleOutward.NeedWaitKey = true;
  623. this.menuDrawCircleOutward.Click += new EventHandler(MenuDrawCircleOutward_Click);
  624. this.menuDrawCircleOutward.Image = PdnResources.GetImageResource("Icons.MenuMeasureOuterCircleIcon.png").Reference;
  625. //
  626. // 直径画圆
  627. //
  628. this.menuDiameterCircle.Text = PdnResources.GetString("Menu.MeasureAction.MeasureDiameterCircle.Text");
  629. this.menuDiameterCircle.NeedWaitKey = true;
  630. this.menuDiameterCircle.Click += new EventHandler(MenuDiameterCircle_Click);
  631. this.menuDiameterCircle.Image = PdnResources.GetImageResource("Icons.MenuMeasureDiameterCircleIcon.png").Reference;
  632. //
  633. // 点到圆距离
  634. //
  635. this.menuPointToCircleDistance.Text = PdnResources.GetString("Menu.MeasureAction.MeasurePointEdgeSize.Text");
  636. this.menuPointToCircleDistance.NeedWaitKey = true;
  637. this.menuPointToCircleDistance.Click += new EventHandler(MenuPointToCircleDistance_Click);
  638. this.menuPointToCircleDistance.Image = PdnResources.GetImageResource("Icons.MenuMeasurePointEdgeSizeIcon.png").Reference;
  639. //
  640. // 点到圆心距离
  641. //
  642. this.menuPointToCenterDistance.Text = PdnResources.GetString("Menu.MeasureAction.MeasurePointCenterSize.Text");
  643. this.menuPointToCenterDistance.NeedWaitKey = true;
  644. this.menuPointToCenterDistance.Click += new EventHandler(MenuPointToCenterDistance_Click);
  645. this.menuPointToCenterDistance.Image = PdnResources.GetImageResource("Icons.MenuPointToCenterDistance.png").Reference;
  646. //
  647. // 点到圆弧距离
  648. //
  649. this.menuPointToArcDistance.Text = PdnResources.GetString("Menu.MeasureAction.MeasurePointArcSize.Text");
  650. this.menuPointToArcDistance.NeedWaitKey = true;
  651. this.menuPointToArcDistance.Click += new EventHandler(MenuPointToArcDistance_Click);
  652. this.menuPointToArcDistance.Image = PdnResources.GetImageResource("Icons.MenuPointToArcDistance.png").Reference;
  653. //
  654. // 圆心到圆心距离
  655. //
  656. this.menuCenterToCenterDistance.Text = PdnResources.GetString("Menu.MeasureAction.MeasureCenterCenterSize.Text");
  657. this.menuCenterToCenterDistance.NeedWaitKey = true;
  658. this.menuCenterToCenterDistance.Click += new EventHandler(MenuCenterToCenterDistance_Click);
  659. this.menuCenterToCenterDistance.Image = PdnResources.GetImageResource("Icons.MenuMeasurePointCenterSizeIcon.png").Reference;
  660. //
  661. // 两线中垂线距离
  662. //
  663. this.menuTwoLineVLDistance.Text = PdnResources.GetString("Menu.MeasureAction.MeasureTwoLineVLDistance.Text");
  664. this.menuTwoLineVLDistance.NeedWaitKey = true;
  665. this.menuTwoLineVLDistance.Click += new EventHandler(MeasureTwoLineVLDistance_Click);
  666. this.menuTwoLineVLDistance.Image = PdnResources.GetImageResource("Icons.MenuTwoLineVLDistance.png").Reference;
  667. //
  668. // 三点角度
  669. //
  670. this.menuThreePointAngle.Text = PdnResources.GetString("Menu.MeasureAction.MeasureThreePointAngle.Text");
  671. this.menuThreePointAngle.NeedWaitKey = true;
  672. this.menuThreePointAngle.Click += new EventHandler(menuThreePointAngle_Click);
  673. this.menuThreePointAngle.Image = PdnResources.GetImageResource("Icons.MenuMeasureThreePointAngleIcon.png").Reference;
  674. //
  675. // 四点角度
  676. //
  677. this.menuFourPointAngle.Text = PdnResources.GetString("Menu.MeasureAction.MeasureFourPointAngle.Text");
  678. this.menuFourPointAngle.NeedWaitKey = true;
  679. this.menuFourPointAngle.Click += new EventHandler(menuFourPointAngle_Click);
  680. this.menuFourPointAngle.Image = PdnResources.GetImageResource("Icons.MenuMeasureFourPointAngleIcon.png").Reference;
  681. //
  682. // 三点弧
  683. //
  684. this.menuThreePointArc.Text = PdnResources.GetString("Menu.MeasureAction.MeasureThreePointArc.Text");
  685. this.menuThreePointArc.NeedWaitKey = true;
  686. this.menuThreePointArc.Click += new EventHandler(menuThreePointArc_Click);
  687. this.menuThreePointArc.Image = PdnResources.GetImageResource("Icons.MenuMeasureThreePointArcIcon.png").Reference;
  688. //
  689. // 几何测量
  690. //
  691. this.menuGeometryMeasure.Text = PdnResources.GetString("MeasureAction.InteractiveMeasurement");
  692. this.menuGeometryMeasure.Click += new EventHandler(menuGeometryMeasure_Click);
  693. this.menuGeometryMeasure.Image = PdnResources.GetImageResource("Icons.MenuMeasureThreePointArcIcon.png").Reference;
  694. //
  695. // 加载菜单的文字和icon
  696. //
  697. this.LoadNames(this.Name);
  698. this.LoadIcons();
  699. }
  700. protected override void OnDropDownOpening(EventArgs e)
  701. {
  702. this.menuContinuousDrawingAction.Checked = DocumentView.ContinuousDrawing;
  703. this.menuMeasureList.Checked = AppWorkspace.Widgets.MeasureListDialog.Visible;
  704. this.menuRulerCalibration.Checked = AppWorkspace.Widgets.RuleListForm.Visible;
  705. this.menuOpticalDensity.Checked = AppWorkspace.Widgets.OpticalDensityDialog.Visible;
  706. this.menuGeometryMeasure.Checked = AppWorkspace.Widgets.GeometryMeasureDialog.Visible;
  707. if (AppWorkspace.ActiveDocumentWorkspace == null/* || AppWorkspace.ScriptRunning*/)
  708. {
  709. this.menuOpticalDensity.Enabled = false;
  710. this.menuBitmapAnalysis.Enabled = false;
  711. }
  712. else
  713. {
  714. this.menuOpticalDensity.Enabled = true;
  715. this.menuBitmapAnalysis.Enabled = true;
  716. }
  717. //this.RecursiveData(this.DropDownItems);
  718. base.OnDropDownOpening(e);
  719. }
  720. /// <summary>
  721. /// 选择
  722. /// </summary>
  723. /// <param name="e"></param>
  724. private void MenuChoiseAction_Click(object sender, EventArgs e)
  725. {
  726. if (_p2Form != null)
  727. _p2Form?.SetActiveTool(DrawToolType.Pointer);
  728. else
  729. if (AppWorkspace.ActiveDocumentWorkspace != null)
  730. {
  731. if (AppWorkspace.startScriptRecording)
  732. {
  733. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  734. }
  735. AppWorkspace.ActiveDocumentWorkspace.ToolNumber = -1;
  736. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.Pointer;
  737. }
  738. this.SetCameraPreviewActiveTool(DrawToolType.Pointer);
  739. }
  740. /// <summary>
  741. /// 全选
  742. /// </summary>
  743. /// <param name="e"></param>
  744. private void MenuSelectAllAction_Click(object sender, EventArgs e)
  745. {
  746. if (_p2Form != null)
  747. {
  748. _p2Form.DrawObjSelectAll();
  749. return;
  750. }
  751. if (AppWorkspace.ActiveDocumentWorkspace != null)
  752. {
  753. if (AppWorkspace.startScriptRecording)
  754. {
  755. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  756. }
  757. AppWorkspace.ActiveDocumentWorkspace.GraphicsList.SelectAll();
  758. AppWorkspace.ActiveDocumentWorkspace.Refresh();
  759. }
  760. if (AppWorkspace.cameraPreviewDialog != null && !AppWorkspace.cameraPreviewDialog.IsDisposed)
  761. {
  762. AppWorkspace.cameraPreviewDialog.documentWorkspace.GraphicsList.SelectAll();
  763. AppWorkspace.cameraPreviewDialog.documentWorkspace.Refresh();
  764. }
  765. }
  766. /// <summary>
  767. /// 连续绘制
  768. /// </summary>
  769. /// <param name="e"></param>
  770. private void MenuContinuousDrawingAction_Click(object sender, EventArgs e)
  771. {
  772. if (AppWorkspace.startScriptRecording)
  773. {
  774. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  775. }
  776. AppWorkspace.ContinuousDrawing = !AppWorkspace.ContinuousDrawing;
  777. }
  778. /// <summary>
  779. /// 清空元素
  780. /// </summary>
  781. /// <param name="e"></param>
  782. private void MenuClearAllAction_Click(object sender, EventArgs e)
  783. {
  784. if (_p2Form != null)
  785. {
  786. _p2Form.DrawObjClear();
  787. return;
  788. }
  789. if (AppWorkspace.ActiveDocumentWorkspace != null)
  790. {
  791. if (AppWorkspace.startScriptRecording)
  792. {
  793. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  794. }
  795. AppWorkspace.ActiveDocumentWorkspace.GraphicsList.Clear();
  796. AppWorkspace.ActiveDocumentWorkspace.Refresh();
  797. }
  798. if (AppWorkspace.cameraPreviewDialog != null && !AppWorkspace.cameraPreviewDialog.IsDisposed)
  799. {
  800. AppWorkspace.cameraPreviewDialog.documentWorkspace.GraphicsList.Clear();
  801. AppWorkspace.cameraPreviewDialog.documentWorkspace.Refresh();
  802. }
  803. }
  804. private void SetDrawTool(DrawToolType drawTool, object sender)
  805. {
  806. if (_p2Form != null)
  807. _p2Form?.SetActiveTool(drawTool);
  808. else
  809. if (AppWorkspace.ActiveDocumentWorkspace != null)
  810. {
  811. if (AppWorkspace.startScriptRecording)
  812. {
  813. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  814. }
  815. AppWorkspace.ActiveDocumentWorkspace.ToolNumber = -1;
  816. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = drawTool;
  817. }
  818. this.SetCameraPreviewActiveTool(drawTool);
  819. }
  820. /// <summary>
  821. /// 长度测量->直线
  822. /// </summary>
  823. private void MenuStraightLine_Click(object sender, EventArgs e)
  824. {
  825. SetDrawTool(DrawToolType.MeasureLine, sender);
  826. }
  827. /// <summary>
  828. /// 长度测量->距离
  829. /// </summary>
  830. private void MenuDistance_Click(object sender, EventArgs e)
  831. {
  832. SetDrawTool(DrawToolType.MeasureDistanceLine, sender);
  833. }
  834. /// <summary>
  835. /// 长度测量->长度
  836. /// </summary>
  837. private void MenuLengthLine_Click(object sender, EventArgs e)
  838. {
  839. SetDrawTool(DrawToolType.MeasureLength, sender);
  840. }
  841. /// <summary>
  842. /// 长度测量->水平线
  843. /// </summary>
  844. private void MenuHorizontalLine_Click(object sender, EventArgs e)
  845. {
  846. SetDrawTool(DrawToolType.MeasureHLine, sender);
  847. }
  848. /// <summary>
  849. /// 长度测量->垂线
  850. /// </summary>
  851. private void MenuPerpendicular_Click(object sender, EventArgs e)
  852. {
  853. SetDrawTool(DrawToolType.MeasureVLine, sender);
  854. }
  855. /// <summary>
  856. /// 测量-曲线-折线
  857. /// </summary>
  858. private void MenuPolyline_Click(object sender, EventArgs e)
  859. {
  860. SetDrawTool(DrawToolType.MeasureBrokenLine, sender);
  861. }
  862. /// <summary>
  863. /// 曲线测量->轨迹曲线
  864. /// </summary>
  865. private void MenuTraceCurve_Click(object sender, EventArgs e)
  866. {
  867. SetDrawTool(DrawToolType.MeasureTraceCurve, sender);
  868. }
  869. /// <summary>
  870. /// 圆形->三点圆
  871. /// </summary>
  872. private void MenuThreePointCircle_Click(object sender, EventArgs e)
  873. {
  874. SetDrawTool(DrawToolType.MeasureCircle, sender);
  875. }
  876. /// <summary>
  877. /// 圆形->向内画圆
  878. /// </summary>
  879. private void MenuDrawCircleInward_Click(object sender, EventArgs e)
  880. {
  881. SetDrawTool(DrawToolType.MeasureInnerCircle, sender);
  882. }
  883. /// <summary>
  884. /// 圆形->向外画圆
  885. /// </summary>
  886. private void MenuDrawCircleOutward_Click(object sender, EventArgs e)
  887. {
  888. SetDrawTool(DrawToolType.MeasureOuterCircle, sender);
  889. }
  890. /// <summary>
  891. /// 圆形->直径画圆
  892. /// </summary>
  893. private void MenuDiameterCircle_Click(object sender, EventArgs e)
  894. {
  895. SetDrawTool(DrawToolType.MeasureDiameterCircle, sender);
  896. }
  897. /// <summary>
  898. /// 圆形->点到圆距离
  899. /// </summary>
  900. private void MenuPointToCircleDistance_Click(object sender, EventArgs e)
  901. {
  902. SetDrawTool(DrawToolType.MeasurePointEdgeSize, sender);
  903. }
  904. /// <summary>
  905. /// 圆形->点到圆心距离
  906. /// </summary>
  907. private void MenuPointToCenterDistance_Click(object sender, EventArgs e)
  908. {
  909. SetDrawTool(DrawToolType.MeasurePointCenterSize, sender);
  910. }
  911. /// <summary>
  912. /// 圆形->点到圆弧距离
  913. /// </summary>
  914. private void MenuPointToArcDistance_Click(object sender, EventArgs e)
  915. {
  916. SetDrawTool(DrawToolType.MeasurePointArcSize, sender);
  917. }
  918. /// <summary>
  919. /// 对准度->圆心到圆心距离
  920. /// </summary>
  921. private void MenuCenterToCenterDistance_Click(object sender, EventArgs e)
  922. {
  923. SetDrawTool(DrawToolType.MeasureCenterCenterSize, sender);
  924. }
  925. /// <summary>
  926. /// 对准度->两线中垂线距离
  927. /// </summary>
  928. private void MeasureTwoLineVLDistance_Click(object sender, EventArgs e)
  929. {
  930. SetDrawTool(DrawToolType.MeasureTwoLineVLDistance, sender);
  931. }
  932. /// <summary>
  933. /// 曲线测量->曲线
  934. /// </summary>
  935. private void MenuCurve_Click(object sender, EventArgs e)
  936. {
  937. SetDrawTool(DrawToolType.MeasureCurveLine, sender);
  938. }
  939. /// <summary>
  940. /// 三点角度
  941. /// </summary>
  942. private void menuThreePointAngle_Click(object sender, EventArgs e)
  943. {
  944. SetDrawTool(DrawToolType.MeasureThreePointAngle, sender);
  945. }
  946. /// <summary>
  947. /// 四点角度
  948. /// </summary>
  949. private void menuFourPointAngle_Click(object sender, EventArgs e)
  950. {
  951. SetDrawTool(DrawToolType.MeasureFourPointAngle, sender);
  952. }
  953. /// <summary>
  954. /// 三点弧
  955. /// </summary>
  956. private void menuThreePointArc_Click(object sender, EventArgs e)
  957. {
  958. SetDrawTool(DrawToolType.MeasureThreePointArc, sender);
  959. }
  960. /// <summary>
  961. /// 几何测量
  962. /// </summary>
  963. private void menuGeometryMeasure_Click(object sender, EventArgs e)
  964. {
  965. //if (AppWorkspace.ActiveDocumentWorkspace != null)
  966. //{
  967. if (AppWorkspace.startScriptRecording)
  968. {
  969. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  970. }
  971. AppWorkspace.Widgets.GeometryMeasureDialog.Visible = !AppWorkspace.Widgets.GeometryMeasureDialog.Visible;
  972. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.Widgets.GeometryMeasureDialog.Visible, "Geometry");
  973. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.Widgets.GeometryMeasureDialog.Visible, "Geometry");
  974. this.menuGeometryMeasure.Checked = AppWorkspace.Widgets.GeometryMeasureDialog.Visible;
  975. if (AppWorkspace.ActiveDocumentWorkspace != null)
  976. {
  977. AppWorkspace.ActiveDocumentWorkspace.Focus();
  978. }
  979. //Form form = Application.OpenForms["GeometryMeasureDialog"];//尝试获取已经弹出的窗口对象
  980. //FloatingFormMethod.ShowFloatForm(form, form == null ? new GeometryMeasureDialog(AppWorkspace) : null, AppWorkspace, true);
  981. AppWorkspace.RefreshMeasureListView();
  982. //}
  983. }
  984. ///<summary>
  985. ///点垂线
  986. ///</summary>
  987. private void menuPointVertical_Click(object sender, EventArgs e)
  988. {
  989. SetDrawTool(DrawToolType.MeasurePLine, sender);
  990. }
  991. ///<summary>
  992. ///多点垂线
  993. ///</summary>
  994. private void menuMultiPointVertical_Click(object sender, EventArgs e)
  995. {
  996. SetDrawTool(DrawToolType.MeasureMulPLine, sender);
  997. }
  998. ///<summary>
  999. ///点到水平线距离
  1000. ///</summary>
  1001. private void menuMultiPointToHLine_Click(object sender, EventArgs e)
  1002. {
  1003. SetDrawTool(DrawToolType.MeasurePointHLine, sender);
  1004. }
  1005. ///<summary>
  1006. ///水平多点垂线
  1007. ///</summary>
  1008. private void menuHorizontalMultipointVertical_Click(object sender, EventArgs e)
  1009. {
  1010. SetDrawTool(DrawToolType.MeasureHMulPLine, sender);
  1011. }
  1012. ///<summary>
  1013. ///垂直多点垂线
  1014. ///</summary>
  1015. private void menuVerticalMultipointVertical_Click(object sender, EventArgs e)
  1016. {
  1017. SetDrawTool(DrawToolType.MeasureVMulPLine, sender);
  1018. }
  1019. ///<summary>
  1020. ///平行线
  1021. ///</summary>
  1022. private void menuParallelLine_Click(object sender, EventArgs e)
  1023. {
  1024. SetDrawTool(DrawToolType.MeasureParallelLine, sender);
  1025. }
  1026. ///<summary>
  1027. ///多点平行线
  1028. ///</summary>
  1029. private void menuMultipointParallel_Click(object sender, EventArgs e)
  1030. {
  1031. SetDrawTool(DrawToolType.MeasureMulParallelLine, sender);
  1032. }
  1033. ///<summary>
  1034. ///水平多点平行线
  1035. ///</summary>
  1036. private void menuMultipointHorizontalParallelLines_Click(object sender, EventArgs e)
  1037. {
  1038. SetDrawTool(DrawToolType.MeasureHMulParallelLine, sender);
  1039. }
  1040. ///<summary>
  1041. ///垂直多点平行线
  1042. ///</summary>
  1043. private void menuMultipointVerticalParallelLines_Click(object sender, EventArgs e)
  1044. {
  1045. SetDrawTool(DrawToolType.MeasureVMulParallelLine, sender);
  1046. }
  1047. ///<summary>
  1048. ///闭合曲线
  1049. ///</summary>
  1050. ///
  1051. private void menuClosedCurve_Click(object sender, EventArgs e)
  1052. {
  1053. SetDrawTool(DrawToolType.MeasureClosedCurve, sender);
  1054. }
  1055. ///<summary>
  1056. ///多边形
  1057. ///</summary>
  1058. private void menuPolygon_Click(object sender, EventArgs e)
  1059. {
  1060. SetDrawTool(DrawToolType.MeasurePolygon, sender);
  1061. }
  1062. ///<summary>
  1063. ///矩形
  1064. ///</summary>
  1065. private void menuRectangle_Click(object sender, EventArgs e)
  1066. {
  1067. SetDrawTool(DrawToolType.MeasureRectangle, sender);
  1068. }
  1069. /// <summary>
  1070. /// 任意矩形
  1071. /// </summary>
  1072. private void menuArbitraryRectangle_Click(object sender, EventArgs e)
  1073. {
  1074. SetDrawTool(DrawToolType.MeasureRandRectangle, sender);
  1075. }
  1076. /// <summary>
  1077. /// 任意正方形
  1078. /// </summary>
  1079. private void menuArbitrarySquare_Click(object sender, EventArgs e)
  1080. {
  1081. SetDrawTool(DrawToolType.MeasureRandSquare, sender);
  1082. }
  1083. ///<summary>
  1084. ///正方形
  1085. ///</summary>
  1086. private void menuSquare_Click(object sender, EventArgs e)
  1087. {
  1088. SetDrawTool(DrawToolType.MeasureSquare, sender);
  1089. }
  1090. ///<summary>
  1091. ///轨迹多边形
  1092. ///</summary>
  1093. private void menuTrackPolygon_Click(object sender, EventArgs e)
  1094. {
  1095. SetDrawTool(DrawToolType.MeasureTracePolygon, sender);
  1096. }
  1097. ///<summary>
  1098. ///多点直线
  1099. ///</summary>
  1100. private void menuMultipointStraightLine_Click(object sender, EventArgs e)
  1101. {
  1102. SetDrawTool(DrawToolType.MeasureMulLine, sender);
  1103. }
  1104. ///<summary>
  1105. ///多点线段
  1106. ///</summary>
  1107. private void menuMultipointLineSegment1_Click(object sender, EventArgs e)
  1108. {
  1109. SetDrawTool(DrawToolType.MeasureMulSegment, sender);
  1110. }
  1111. ///<summary>
  1112. ///多点水平线
  1113. ///</summary>
  1114. private void menuMultipointHorizontalLine_Click(object sender, EventArgs e)
  1115. {
  1116. SetDrawTool(DrawToolType.MeasureMulHVLine, sender);
  1117. }
  1118. ///<summary>
  1119. ///多点垂直线
  1120. ///</summary>
  1121. private void menuMultipointVerticalLine_Click(object sender, EventArgs e)
  1122. {
  1123. SetDrawTool(DrawToolType.MeasureMulVLine, sender);
  1124. }
  1125. /// <summary>
  1126. /// 标尺标定
  1127. /// </summary>
  1128. private void MenuRulerCalibration_Click(object sender, EventArgs e)
  1129. {
  1130. AppWorkspace.Widgets.RuleListForm.Visible = !AppWorkspace.Widgets.RuleListForm.Visible;
  1131. if (AppWorkspace.ActiveDocumentWorkspace != null)
  1132. {
  1133. if (AppWorkspace.startScriptRecording)
  1134. {
  1135. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  1136. }
  1137. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.Widgets.RuleListForm.Visible, "RulerCalibration");
  1138. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.Widgets.RuleListForm.Visible, "RulerCalibration");
  1139. this.menuRulerCalibration.Checked = AppWorkspace.Widgets.RuleListForm.Visible;
  1140. AppWorkspace.ActiveDocumentWorkspace.Focus();
  1141. //AppWorkspace.Widgets.RuleListForm.MenuSubApplyCurrent();
  1142. }
  1143. }
  1144. /// <summary>
  1145. /// 应用当前
  1146. /// </summary>
  1147. private void MenuSubApplyCurrent_Click(object sender, EventArgs e)
  1148. {
  1149. if (AppWorkspace.startScriptRecording)
  1150. {
  1151. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  1152. }
  1153. AppWorkspace.Widgets.RuleListForm.MenuSubApplyCurrent();
  1154. }
  1155. /// <summary>
  1156. /// 应用全部
  1157. /// </summary>
  1158. private void MenuSubApplyAll_Click(object sender, EventArgs e)
  1159. {
  1160. if (AppWorkspace.startScriptRecording)
  1161. {
  1162. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  1163. }
  1164. AppWorkspace.Widgets.RuleListForm.MenuSubApplyAll();
  1165. }
  1166. /// <summary>
  1167. /// 测量列表
  1168. /// </summary>
  1169. private void MenuMeasureList_Click(object sender, EventArgs e)
  1170. {
  1171. AppWorkspace.Widgets.MeasureListDialog.Visible = !AppWorkspace.Widgets.MeasureListDialog.Visible;
  1172. if (AppWorkspace.ActiveDocumentWorkspace != null)
  1173. {
  1174. if (AppWorkspace.startScriptRecording)
  1175. {
  1176. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  1177. }
  1178. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.Widgets.MeasureListDialog.Visible, "MeasureList");
  1179. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.Widgets.MeasureListDialog.Visible, "MeasureList");
  1180. this.menuMeasureList.Checked = AppWorkspace.Widgets.MeasureListDialog.Visible;
  1181. AppWorkspace.ActiveDocumentWorkspace.Focus();
  1182. }
  1183. }
  1184. /// <summary>
  1185. /// 光密度
  1186. /// </summary>
  1187. private void MenuOpticalDensity_Click(object sender, EventArgs e)
  1188. {
  1189. AppWorkspace.Widgets.OpticalDensityDialog.Visible = !AppWorkspace.Widgets.OpticalDensityDialog.Visible;
  1190. if (AppWorkspace.ActiveDocumentWorkspace != null)
  1191. {
  1192. if (AppWorkspace.startScriptRecording)
  1193. {
  1194. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  1195. }
  1196. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.Widgets.OpticalDensityDialog.Visible, "OpticalDensity");
  1197. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.Widgets.OpticalDensityDialog.Visible, "OpticalDensity");
  1198. this.menuOpticalDensity.Checked = AppWorkspace.Widgets.OpticalDensityDialog.Visible;
  1199. bool canDram = true;
  1200. int count = this.AppWorkspace.ActiveDocumentWorkspace.GraphicsList.Count;
  1201. for (int i = 0; i < count; i++)
  1202. {
  1203. if (this.AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i].objectType == DrawClass.Other
  1204. && this.AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i].drawToolType == DrawToolType.OpticalDensityLine)
  1205. {
  1206. canDram = false;
  1207. this.AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i].Selected = true;
  1208. }
  1209. }
  1210. if (canDram)
  1211. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.OpticalDensityLine;
  1212. AppWorkspace.ActiveDocumentWorkspace.Focus();
  1213. }
  1214. }
  1215. /// <summary>
  1216. /// 位图分析
  1217. /// </summary>
  1218. private void BitmapAnalysis_Click(object sender, EventArgs e)
  1219. {
  1220. if (AppWorkspace.ActiveDocumentWorkspace != null)
  1221. {
  1222. using (BitmapAnalysisDialog dialog = new BitmapAnalysisDialog(this.AppWorkspace))
  1223. {
  1224. if (AppWorkspace.startScriptRecording)
  1225. {
  1226. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  1227. }
  1228. dialog.StartPosition = FormStartPosition.CenterParent;
  1229. dialog.ShowDialog();
  1230. }
  1231. }
  1232. else
  1233. {
  1234. MessageBox.Show(PdnResources.GetString("Menu.Pleaseopenatleastonepicturefirst.Text"));
  1235. }
  1236. }
  1237. /// <summary>
  1238. /// 理论比例尺
  1239. /// </summary>
  1240. private void TheoreticalScale_Click(object sender, EventArgs e)
  1241. {
  1242. using (TheoreticalScaleDialog dialog = new TheoreticalScaleDialog(this.AppWorkspace, ArrayList1, ArrayList2, ArrayList3))
  1243. {
  1244. if (AppWorkspace.startScriptRecording)
  1245. {
  1246. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  1247. }
  1248. dialog.StartPosition = FormStartPosition.CenterParent;
  1249. dialog.ShowDialog();
  1250. }
  1251. }
  1252. private void SetCameraPreviewActiveTool(DrawToolType drawToolType)
  1253. {
  1254. if (AppWorkspace.cameraPreviewDialog != null && !AppWorkspace.cameraPreviewDialog.IsDisposed)
  1255. {
  1256. AppWorkspace.cameraPreviewDialog.documentWorkspace.ActiveTool = drawToolType;
  1257. }
  1258. }
  1259. private string GetCultureInfoName(CultureInfo ci)
  1260. {
  1261. CultureInfo en_US = new CultureInfo("en-US");
  1262. if (ci.Equals(en_US))
  1263. {
  1264. return GetCultureInfoName(ci.Parent);
  1265. }
  1266. else
  1267. {
  1268. return ci.NativeName;
  1269. }
  1270. }
  1271. public void checkMenu(bool v)
  1272. {
  1273. this.menuContinuousDrawingAction.Checked = v;
  1274. if (v == false)
  1275. _p2Form?.SetActiveTool(DrawToolType.Pointer);
  1276. }
  1277. }
  1278. }