ViewSettingMenu.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. using PaintDotNet.Annotation.Enum;
  2. using PaintDotNet.Base;
  3. using PaintDotNet.Data.Param;
  4. using PaintDotNet.FieldView;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Drawing;
  8. using System.Drawing.Drawing2D;
  9. using System.Drawing.Imaging;
  10. using System.Globalization;
  11. using System.Windows.Forms;
  12. namespace PaintDotNet.Menus
  13. {
  14. /// <summary>
  15. /// 视场菜单
  16. /// </summary>
  17. internal sealed class ViewSettingMenu : PdnMenuItem
  18. {
  19. private PdnMenuItem menuViewSelect;
  20. private PdnMenuItem menuViewDeleteSelect;
  21. private PdnMenuItem menuViewClearAll;
  22. private ToolStripSeparator menuHelpSeparator1;
  23. private PdnMenuItem menuOvalView;
  24. private PdnMenuItem menuRoundView;
  25. private PdnMenuItem menuRectangleView;
  26. private PdnMenuItem menuRectangleExView;
  27. private PdnMenuItem menuTriangleView;
  28. private PdnMenuItem menuTriangleExView;
  29. private PdnMenuItem menuSquareView;
  30. private PdnMenuItem menuPolygonView;
  31. private ToolStripSeparator menuHelpSeparator2;
  32. private PdnMenuItem menuMergeFieldOfView;
  33. private PdnMenuItem menuDeleteFieldOfView;
  34. private ToolStripSeparator menuHelpSeparator3;
  35. private PdnMenuItem menuShearFieldOfView;
  36. private PdnMenuItem menuTransparentCut;
  37. private ToolStripSeparator menuHelpSeparator4;
  38. private PdnMenuItem menuOpenFieldOfView;
  39. private PdnMenuItem menuModifyFieldOfView;
  40. private PdnMenuItem menuSaveFieldOfView;
  41. public ViewSettingMenu(int menuId)
  42. {
  43. InitializeComponent();
  44. this.MenuId = menuId;
  45. this.AutoNextScript = false;
  46. this.AutomaticScript = false;
  47. }
  48. protected override void OnAppWorkspaceChanged()
  49. {
  50. base.OnAppWorkspaceChanged();
  51. }
  52. protected override void OnDropDownOpening(EventArgs e)
  53. {
  54. //this.RecursiveData(this.DropDownItems);
  55. base.OnDropDownOpening(e);
  56. }
  57. private void InitializeComponent()
  58. {
  59. this.menuViewSelect = new PdnMenuItem(ActionType.ViewSelect);
  60. this.menuViewDeleteSelect = new PdnMenuItem(ActionType.ViewDeleteSelect);
  61. this.menuViewClearAll = new PdnMenuItem(ActionType.ViewClearAll);
  62. this.menuHelpSeparator1 = new ToolStripSeparator();
  63. this.menuOvalView = new PdnMenuItem(ActionType.OvalView);
  64. this.menuRoundView = new PdnMenuItem(ActionType.RoundView);
  65. this.menuRectangleView = new PdnMenuItem(ActionType.RectangleView);
  66. this.menuRectangleExView = new PdnMenuItem(ActionType.RectangleExView);
  67. this.menuTriangleView = new PdnMenuItem(ActionType.TriangleView);
  68. this.menuTriangleExView = new PdnMenuItem(ActionType.TriangleExView);
  69. this.menuSquareView = new PdnMenuItem(ActionType.SquareView);
  70. this.menuPolygonView = new PdnMenuItem(ActionType.PolygonView);
  71. this.menuHelpSeparator2 = new ToolStripSeparator();
  72. this.menuMergeFieldOfView = new PdnMenuItem(ActionType.MergeFieldOfView);
  73. this.menuDeleteFieldOfView = new PdnMenuItem(ActionType.DeleteFieldOfView);
  74. this.menuHelpSeparator3 = new ToolStripSeparator();
  75. this.menuShearFieldOfView = new PdnMenuItem(ActionType.ShearFieldOfView);
  76. this.menuTransparentCut = new PdnMenuItem(ActionType.TransparentCut);
  77. this.menuHelpSeparator4 = new ToolStripSeparator();
  78. this.menuOpenFieldOfView = new PdnMenuItem(ActionType.OpenFieldOfView);
  79. this.menuModifyFieldOfView = new PdnMenuItem(ActionType.ModifyFieldOfView);
  80. this.menuSaveFieldOfView = new PdnMenuItem(ActionType.SaveFieldOfView);
  81. //
  82. // 主菜单
  83. //
  84. this.DropDownItems.AddRange(new ToolStripItem[] {
  85. this.menuViewSelect,
  86. this.menuViewDeleteSelect,
  87. this.menuViewClearAll,
  88. this.menuHelpSeparator1,
  89. this.menuOvalView,
  90. this.menuRoundView,
  91. this.menuRectangleView,
  92. this.menuRectangleExView,
  93. this.menuTriangleView,
  94. this.menuTriangleExView,
  95. this.menuSquareView,
  96. this.menuPolygonView,
  97. this.menuHelpSeparator2,
  98. this.menuMergeFieldOfView,
  99. this.menuDeleteFieldOfView,
  100. this.menuHelpSeparator3,
  101. this.menuShearFieldOfView,
  102. this.menuTransparentCut,
  103. this.menuHelpSeparator4,
  104. this.menuOpenFieldOfView,
  105. this.menuModifyFieldOfView,
  106. this.menuSaveFieldOfView
  107. });
  108. this.Name = "Menu.ViewSetting";
  109. this.Text = PdnResources.GetString("Menu.ViewSetting.Text");
  110. //
  111. // 选择视场
  112. //
  113. this.menuViewSelect.Click += new EventHandler(MenuViewSelect_Click);
  114. this.menuViewSelect.NeedWaitKey = true;
  115. //
  116. // 删除选择
  117. //
  118. this.menuViewDeleteSelect.Click += new System.EventHandler(MenuViewDeleteSelect_Click);
  119. this.menuViewDeleteSelect.NeedWaitKey = true;
  120. //
  121. // 清空全部
  122. //
  123. this.menuViewClearAll.Click += new System.EventHandler(MenuViewClearAll_Click);
  124. this.menuViewClearAll.NeedWaitKey = true;
  125. //
  126. // 椭圆视场
  127. //
  128. this.menuOvalView.Click += new System.EventHandler(MenuOvalView_Click);
  129. this.menuOvalView.NeedWaitKey = true;
  130. //
  131. // 圆形视场
  132. //
  133. this.menuRoundView.Click += new System.EventHandler(MenuRoundView_Click);
  134. this.menuRoundView.NeedWaitKey = true;
  135. //
  136. // 矩形视场
  137. //
  138. this.menuRectangleView.Click += new System.EventHandler(MenuRectangleView_Click);
  139. this.menuRectangleView.NeedWaitKey = true;
  140. //
  141. // 矩形视场
  142. //
  143. this.menuRectangleExView.Click += new System.EventHandler(MenuRectangleExView_Click);
  144. this.menuRectangleExView.NeedWaitKey = true;
  145. //
  146. // 直角三角形视场
  147. //
  148. this.menuTriangleView.Click += new System.EventHandler(MenuTriangleView_Click);
  149. this.menuTriangleView.NeedWaitKey = true;
  150. //
  151. // 任意三角形视场
  152. //
  153. this.menuTriangleExView.Click += new System.EventHandler(MenuTriangleExView_Click);
  154. this.menuTriangleExView.NeedWaitKey = true;
  155. //
  156. // 正方形视场
  157. //
  158. this.menuSquareView.Click += new System.EventHandler(MenuSquareView_Click);
  159. this.menuSquareView.NeedWaitKey = true;
  160. //
  161. // 多边形视场
  162. //
  163. this.menuPolygonView.Click += new System.EventHandler(MenuPolygonView_Click);
  164. this.menuPolygonView.NeedWaitKey = true;
  165. //
  166. // 合并视场
  167. //
  168. this.menuMergeFieldOfView.Click += new System.EventHandler(MenuMergeFieldOfView_Click);
  169. this.menuMergeFieldOfView.NeedWaitKey = true;
  170. this.menuMergeFieldOfView.Checked = true;
  171. //
  172. // 删除视场
  173. //
  174. this.menuDeleteFieldOfView.Click += new System.EventHandler(MenuDeleteFieldOfView_Click);
  175. this.menuDeleteFieldOfView.NeedWaitKey = true;
  176. this.menuDeleteFieldOfView.Checked = false;
  177. //
  178. // 剪切视场
  179. //
  180. this.menuShearFieldOfView.Click += new System.EventHandler(MenuShearFieldOfView_Click);
  181. this.menuShearFieldOfView.NeedWaitKey = true;
  182. //
  183. // 透明剪切
  184. //
  185. this.menuTransparentCut.Click += new System.EventHandler(MenuTransparentCut_Click);
  186. this.menuTransparentCut.NeedWaitKey = true;
  187. //
  188. // 打开视场
  189. //
  190. this.menuOpenFieldOfView.Click += new System.EventHandler(MenuOpenFieldOfView_Click);
  191. this.menuOpenFieldOfView.NeedWaitKey = true;
  192. //
  193. // 修改视场
  194. //
  195. this.menuModifyFieldOfView.Click += new System.EventHandler(MenuModifyFieldOfView_Click);
  196. this.menuModifyFieldOfView.NeedWaitKey = true;
  197. //
  198. // 保存视场
  199. //
  200. this.menuSaveFieldOfView.Click += new System.EventHandler(MenuSaveFieldOfView_Click);
  201. this.menuSaveFieldOfView.NeedWaitKey = true;
  202. //
  203. // 加载菜单的文字和icon
  204. //
  205. this.LoadNames(this.Name);
  206. this.LoadIcons();
  207. }
  208. /// <summary>
  209. /// 选择视场
  210. /// </summary>
  211. /// <param name="sender"></param>
  212. /// <param name="e"></param>
  213. private void MenuViewSelect_Click(object sender, EventArgs e)
  214. {
  215. if (AppWorkspace.ActiveDocumentWorkspace != null)
  216. {
  217. if (AppWorkspace.startScriptRecording)
  218. {
  219. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  220. }
  221. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.Pointer;
  222. }
  223. }
  224. /// <summary>
  225. /// 删除选择的视场
  226. /// </summary>
  227. /// <param name="sender"></param>
  228. /// <param name="e"></param>
  229. private void MenuViewDeleteSelect_Click(object sender, EventArgs e)
  230. {
  231. if (AppWorkspace.ActiveDocumentWorkspace != null)
  232. {
  233. if (AppWorkspace.startScriptRecording)
  234. {
  235. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  236. }
  237. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.Pointer;
  238. AppWorkspace.ActiveDocumentWorkspace.GraphicsList.DeleteSelection(DrawClass.View);
  239. AppWorkspace.ActiveDocumentWorkspace.Refresh();
  240. }
  241. }
  242. /// <summary>
  243. /// 清空全部
  244. /// </summary>
  245. /// <param name="sender"></param>
  246. /// <param name="e"></param>
  247. private void MenuViewClearAll_Click(object sender, EventArgs e)
  248. {
  249. if (AppWorkspace.ActiveDocumentWorkspace != null)
  250. {
  251. if (AppWorkspace.startScriptRecording)
  252. {
  253. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  254. }
  255. AppWorkspace.ActiveDocumentWorkspace.GraphicsList.DeleteAllView();
  256. AppWorkspace.ActiveDocumentWorkspace.Refresh();
  257. }
  258. }
  259. /// <summary>
  260. /// 椭圆视场
  261. /// </summary>
  262. /// <param name="sender"></param>
  263. /// <param name="e"></param>
  264. private void MenuOvalView_Click(object sender, EventArgs e)
  265. {
  266. if (AppWorkspace.ActiveDocumentWorkspace != null)
  267. {
  268. if (AppWorkspace.startScriptRecording)
  269. {
  270. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  271. }
  272. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.ViewOval;
  273. }
  274. }
  275. /// <summary>
  276. /// 圆形视场
  277. /// </summary>
  278. /// <param name="sender"></param>
  279. /// <param name="e"></param>
  280. private void MenuRoundView_Click(object sender, EventArgs e)
  281. {
  282. if (AppWorkspace.ActiveDocumentWorkspace != null)
  283. {
  284. if (AppWorkspace.startScriptRecording)
  285. {
  286. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  287. }
  288. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.ViewCircle;
  289. }
  290. }
  291. /// <summary>
  292. /// 矩形视场
  293. /// </summary>
  294. /// <param name="sender"></param>
  295. /// <param name="e"></param>
  296. private void MenuRectangleView_Click(object sender, EventArgs e)
  297. {
  298. if (AppWorkspace.ActiveDocumentWorkspace != null)
  299. {
  300. if (AppWorkspace.startScriptRecording)
  301. {
  302. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  303. }
  304. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.ViewRectangle;
  305. }
  306. }
  307. /// <summary>
  308. /// 矩形视场
  309. /// </summary>
  310. /// <param name="sender"></param>
  311. /// <param name="e"></param>
  312. private void MenuRectangleExView_Click(object sender, EventArgs e)
  313. {
  314. if (AppWorkspace.ActiveDocumentWorkspace != null)
  315. {
  316. if (AppWorkspace.startScriptRecording)
  317. {
  318. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  319. }
  320. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.ViewRectangleEx;
  321. }
  322. }
  323. /// <summary>
  324. /// 三角形视场
  325. /// </summary>
  326. /// <param name="sender"></param>
  327. /// <param name="e"></param>
  328. private void MenuTriangleView_Click(object sender, EventArgs e)
  329. {
  330. if (AppWorkspace.ActiveDocumentWorkspace != null)
  331. {
  332. if (AppWorkspace.startScriptRecording)
  333. {
  334. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  335. }
  336. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.ViewTriangle;
  337. }
  338. }
  339. /// <summary>
  340. /// 任意三角形视场
  341. /// </summary>
  342. /// <param name="sender"></param>
  343. /// <param name="e"></param>
  344. private void MenuTriangleExView_Click(object sender, EventArgs e)
  345. {
  346. if (AppWorkspace.ActiveDocumentWorkspace != null)
  347. {
  348. if (AppWorkspace.startScriptRecording)
  349. {
  350. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  351. }
  352. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.ViewTriangleEx;
  353. }
  354. }
  355. /// <summary>
  356. /// 正方形视场
  357. /// </summary>
  358. /// <param name="sender"></param>
  359. /// <param name="e"></param>
  360. private void MenuSquareView_Click(object sender, EventArgs e)
  361. {
  362. if (AppWorkspace.ActiveDocumentWorkspace != null)
  363. {
  364. if (AppWorkspace.startScriptRecording)
  365. {
  366. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  367. }
  368. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.ViewSquare;
  369. }
  370. }
  371. /// <summary>
  372. /// 多边形视场
  373. /// </summary>
  374. /// <param name="sender"></param>
  375. /// <param name="e"></param>
  376. private void MenuPolygonView_Click(object sender, EventArgs e)
  377. {
  378. if (AppWorkspace.ActiveDocumentWorkspace != null)
  379. {
  380. if (AppWorkspace.startScriptRecording)
  381. {
  382. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  383. }
  384. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.ViewPolygon;
  385. }
  386. }
  387. /// <summary>
  388. /// 合并视场
  389. /// </summary>
  390. /// <param name="sender"></param>
  391. /// <param name="e"></param>
  392. private void MenuMergeFieldOfView_Click(object sender, EventArgs e)
  393. {
  394. if (AppWorkspace.ActiveDocumentWorkspace != null)
  395. {
  396. AppWorkspace.ActiveDocumentWorkspace.CombineMode = CombineMode.Union;
  397. if (!AppWorkspace.ActiveDocumentWorkspace.MergeFieldOfView)
  398. {
  399. if (AppWorkspace.startScriptRecording)
  400. {
  401. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  402. }
  403. AppWorkspace.ActiveDocumentWorkspace.DeleteFieldOfView = AppWorkspace.ActiveDocumentWorkspace.MergeFieldOfView;
  404. AppWorkspace.ActiveDocumentWorkspace.MergeFieldOfView = !AppWorkspace.ActiveDocumentWorkspace.MergeFieldOfView;
  405. this.menuMergeFieldOfView.Checked = AppWorkspace.ActiveDocumentWorkspace.MergeFieldOfView;
  406. this.menuDeleteFieldOfView.Checked = AppWorkspace.ActiveDocumentWorkspace.DeleteFieldOfView;
  407. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.DeleteFieldOfView, "DeleteFieldOfView");
  408. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.DeleteFieldOfView, "DeleteFieldOfView");
  409. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.MergeFieldOfView, "MergeFieldOfView");
  410. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.MergeFieldOfView, "MergeFieldOfView");
  411. }
  412. }
  413. }
  414. /// <summary>
  415. /// 删除视场
  416. /// </summary>
  417. /// <param name="sender"></param>
  418. /// <param name="e"></param>
  419. private void MenuDeleteFieldOfView_Click(object sender, EventArgs e)
  420. {
  421. if (AppWorkspace.ActiveDocumentWorkspace != null)
  422. {
  423. AppWorkspace.ActiveDocumentWorkspace.CombineMode = CombineMode.Complement;
  424. if(!AppWorkspace.ActiveDocumentWorkspace.DeleteFieldOfView)
  425. {
  426. if (AppWorkspace.startScriptRecording)
  427. {
  428. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  429. }
  430. AppWorkspace.ActiveDocumentWorkspace.MergeFieldOfView = AppWorkspace.ActiveDocumentWorkspace.DeleteFieldOfView;
  431. AppWorkspace.ActiveDocumentWorkspace.DeleteFieldOfView = !AppWorkspace.ActiveDocumentWorkspace.DeleteFieldOfView;
  432. this.menuMergeFieldOfView.Checked = AppWorkspace.ActiveDocumentWorkspace.MergeFieldOfView;
  433. this.menuDeleteFieldOfView.Checked = AppWorkspace.ActiveDocumentWorkspace.DeleteFieldOfView;
  434. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.MergeFieldOfView, "MergeFieldOfView");
  435. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.MergeFieldOfView, "MergeFieldOfView");
  436. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.DeleteFieldOfView, "DeleteFieldOfView");
  437. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.DeleteFieldOfView, "DeleteFieldOfView");
  438. }
  439. }
  440. }
  441. /// <summary>
  442. /// 剪切视场
  443. /// </summary>
  444. /// <param name="sender"></param>
  445. /// <param name="e"></param>
  446. private void MenuShearFieldOfView_Click(object sender, EventArgs e)
  447. {
  448. if (this.AppWorkspace!=null && this.AppWorkspace.ActiveDocumentWorkspace!=null)
  449. {
  450. Bitmap bitmap = this.AppWorkspace.ActiveDocumentWorkspace.GetCutSizeWithColorWhiteOrTransparent(false);
  451. if(bitmap!=null)
  452. {
  453. if (AppWorkspace.startScriptRecording)
  454. {
  455. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  456. }
  457. DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
  458. Document document = Document.FromImageMat(Camera.Tools.ToMat(bitmap));
  459. dw.Document = document;
  460. dw.xmlSaveModel = this.AppWorkspace.ActiveDocumentWorkspace.xmlSaveModel;
  461. dw.rules = this.AppWorkspace.ActiveDocumentWorkspace.rules;
  462. dw.fileText = PdnResources.GetString("Menu.ViewSetting.ShearFieldOfView.Text") + "-" + Startup.instance.step_length;
  463. AppWorkspace.ActiveDocumentWorkspace = dw;
  464. Startup.instance.step_length += 1;
  465. }
  466. }
  467. }
  468. /// <summary>
  469. /// 透明剪切
  470. /// </summary>
  471. /// <param name="sender"></param>
  472. /// <param name="e"></param>
  473. private void MenuTransparentCut_Click(object sender, EventArgs e)
  474. {
  475. if (this.AppWorkspace != null && this.AppWorkspace.ActiveDocumentWorkspace != null)
  476. {
  477. Bitmap bitmap = this.AppWorkspace.ActiveDocumentWorkspace.GetCutSizeWithColorWhiteOrTransparent(true);
  478. if (bitmap != null)
  479. {
  480. if (AppWorkspace.startScriptRecording)
  481. {
  482. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  483. }
  484. DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
  485. Document document = Document.FromImageMat(Camera.Tools.ToMat(bitmap));
  486. dw.Document = document;
  487. dw.xmlSaveModel = this.AppWorkspace.ActiveDocumentWorkspace.xmlSaveModel;
  488. dw.rules = this.AppWorkspace.ActiveDocumentWorkspace.rules;
  489. dw.fileText = PdnResources.GetString("Menu.ViewSetting.TransparentCut.Text") + "-" + Startup.instance.step_length;
  490. AppWorkspace.ActiveDocumentWorkspace = dw;
  491. Startup.instance.step_length += 1;
  492. }
  493. }
  494. }
  495. /// <summary>
  496. /// 打开视场
  497. /// </summary>
  498. /// <param name="sender"></param>
  499. /// <param name="e"></param>
  500. private void MenuOpenFieldOfView_Click(object sender, EventArgs e)
  501. {
  502. using (OpenViewDialog dialog = new OpenViewDialog(AppWorkspace))
  503. {
  504. if (AppWorkspace.startScriptRecording)
  505. {
  506. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  507. }
  508. dialog.StartPosition = FormStartPosition.CenterScreen;
  509. dialog.ShowDialog();
  510. }
  511. }
  512. /// <summary>
  513. /// 修改视场
  514. /// </summary>
  515. /// <param name="sender"></param>
  516. /// <param name="e"></param>
  517. private void MenuModifyFieldOfView_Click(object sender, EventArgs e)
  518. {
  519. //如果当前界面有视场、并且选中的是视场
  520. if (AppWorkspace.ActiveDocumentWorkspace!=null
  521. && AppWorkspace.ActiveDocumentWorkspace.GraphicsList!=null
  522. && AppWorkspace.ActiveDocumentWorkspace.GraphicsList.Count>0
  523. && AppWorkspace.ActiveDocumentWorkspace.GraphicsList.SelectionCount==1)
  524. {
  525. if (AppWorkspace.startScriptRecording)
  526. {
  527. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  528. }
  529. var changeViewDialog = (ChangeViewDialog)Application.OpenForms["ChangeViewDialog"];//尝试获取已经弹出的窗口对象
  530. FloatingFormMethod.ShowFloatForm(changeViewDialog, changeViewDialog == null ? new ChangeViewDialog(AppWorkspace)/*没有弹出的窗口对象则创建*/ : null, AppWorkspace);
  531. }
  532. else
  533. {
  534. MessageBox.Show(PdnResources.GetString("Menu.leaseonlyonefieldofviewtomodify.Text"));
  535. }
  536. }
  537. /// <summary>
  538. /// 保存视场
  539. /// </summary>
  540. /// <param name="sender"></param>
  541. /// <param name="e"></param>
  542. private void MenuSaveFieldOfView_Click(object sender, EventArgs e)
  543. {
  544. if(AppWorkspace.ActiveDocumentWorkspace!=null)
  545. {
  546. Region region = AppWorkspace.ActiveDocumentWorkspace.GetRegion();
  547. Bitmap bitmap = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreateAliasedBitmap();
  548. //判断当前surfacebox内是否有视场
  549. if (region != null)
  550. {
  551. using (SaveViewDialog dialog = new SaveViewDialog(AppWorkspace, region, bitmap))
  552. {
  553. if (AppWorkspace.startScriptRecording)
  554. {
  555. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  556. }
  557. dialog.StartPosition = FormStartPosition.CenterScreen;
  558. dialog.ShowDialog();
  559. }
  560. }
  561. else
  562. {
  563. MessageBox.Show(PdnResources.GetString("Menu.Drawthefieldofviewfirst.Text"));
  564. }
  565. }
  566. }
  567. private string GetCultureInfoName(CultureInfo ci)
  568. {
  569. CultureInfo en_US = new CultureInfo("en-US");
  570. if (ci.Equals(en_US))
  571. {
  572. return GetCultureInfoName(ci.Parent);
  573. }
  574. else
  575. {
  576. return ci.NativeName;
  577. }
  578. }
  579. }
  580. }