EditMenu.cs 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031
  1. using OpenCvSharp;
  2. using PaintDotNet.Adjust;
  3. using PaintDotNet.Adjust.BaseImage;
  4. using PaintDotNet.Annotation;
  5. using PaintDotNet.Annotation.Enum;
  6. using PaintDotNet.Annotation.Label;
  7. using PaintDotNet.Base;
  8. using PaintDotNet.Base.CommTool;
  9. using PaintDotNet.Data.Param;
  10. using PaintDotNet.DbOpreate.DbBll;
  11. using PaintDotNet.DbOpreate.DbModel;
  12. using PaintDotNet.Preview2;
  13. using System;
  14. using System.Collections.Generic;
  15. using System.Drawing;
  16. using System.Windows.Forms;
  17. namespace PaintDotNet.Menus
  18. {
  19. /// <summary>
  20. /// 编辑菜单
  21. /// </summary>
  22. internal sealed class EditMenu : PdnMenuItem
  23. {
  24. private PdnMenuItem menuEditUndo;
  25. private PdnMenuItem menuEditRedo;
  26. private PdnMenuItem menuEditCopy;
  27. private PdnMenuItem menuEditPaste;
  28. private PdnMenuItem menuEditDelete;
  29. private ToolStripSeparator menuEditSeparator1;
  30. private PdnMenuItem menuViewZoomIn;
  31. private PdnMenuItem menuViewZoomOut;
  32. private PdnMenuItem menuViewActualSize;
  33. private PdnMenuItem menuViewZoomToWindow;
  34. private PdnMenuItem menuViewZoomToWidth;
  35. private PdnMenuItem menuViewZoomToHeight;
  36. private ToolStripSeparator menuEditSeparator2;
  37. private PdnMenuItem menuImageCut;
  38. private PdnMenuItem menuLockZoom;
  39. private PdnMenuItem menuFixedMultiple;
  40. private ToolStripSeparator menuEditSeparator3;
  41. private PdnMenuItem menuImageFlipHorizontal;
  42. private PdnMenuItem menuImageFlipVertical;
  43. private PdnMenuItem menuImageFlipCenter;
  44. private ToolStripSeparator menuEditSeparator4;
  45. private PdnMenuItem menuImageRotate90CW;
  46. private PdnMenuItem menuImageRotate180;
  47. private PdnMenuItem menuImageRotate90CCW;
  48. private Bitmap copyedBitmap;//复制的图片
  49. private int nameNum = 0;//命名使用
  50. public static Preview2Dialog _p2Form => Preview2Dialog.Instance;
  51. private bool OnBackspaceTyped(Keys keys)
  52. {
  53. if (AppWorkspace.ActiveDocumentWorkspace != null)
  54. {
  55. //this.menuEditFillSelection.PerformClick();
  56. return true;
  57. }
  58. else
  59. {
  60. return false;
  61. }
  62. }
  63. public EditMenu(int menuId)
  64. {
  65. //PdnBaseForm.RegisterFormHotKey(Keys.Back, OnBackspaceTyped);
  66. //PdnBaseForm.RegisterFormHotKey(Keys.Shift | Keys.Delete, OnLeftHandedCutHotKey);
  67. PdnBaseForm.RegisterFormHotKey(Keys.Control | Keys.Insert, OnLeftHandedCopyHotKey);
  68. PdnBaseForm.RegisterFormHotKey(Keys.Shift | Keys.Insert, OnLeftHandedPasteHotKey);
  69. InitializeComponent();
  70. this.MenuId = menuId;
  71. }
  72. /**
  73. private bool OnLeftHandedCutHotKey(Keys keys)
  74. {
  75. this.menuEditCut.PerformClick();
  76. return true;
  77. }**/
  78. private bool OnLeftHandedCopyHotKey(Keys keys)
  79. {
  80. this.menuEditCopy.PerformClick();
  81. return true;
  82. }
  83. private bool OnLeftHandedPasteHotKey(Keys keys)
  84. {
  85. this.menuEditPaste.PerformClick();
  86. return true;
  87. }
  88. private void InitializeComponent()
  89. {
  90. this.menuEditUndo = new PdnMenuItem(ActionType.Undo);
  91. this.menuEditRedo = new PdnMenuItem(ActionType.Redo);
  92. this.menuEditCopy = new PdnMenuItem(ActionType.Copy);
  93. this.menuEditPaste = new PdnMenuItem(ActionType.Paste);
  94. this.menuEditDelete = new PdnMenuItem(ActionType.Delete);
  95. this.menuEditSeparator1 = new ToolStripSeparator();
  96. this.menuViewZoomIn = new PdnMenuItem(ActionType.ZoomIn);
  97. this.menuViewZoomOut = new PdnMenuItem(ActionType.ZoomOut);
  98. this.menuViewActualSize = new PdnMenuItem(ActionType.ActualSize, true);
  99. this.menuViewZoomToWindow = new PdnMenuItem(ActionType.ZoomToWindow, true);
  100. this.menuViewZoomToWidth = new PdnMenuItem(ActionType.ZoomToWidth, true);
  101. this.menuViewZoomToHeight = new PdnMenuItem(ActionType.ZoomToHeight, true);
  102. this.menuEditSeparator2 = new ToolStripSeparator();
  103. this.menuImageCut = new PdnMenuItem(ActionType.ImageCut);
  104. this.menuLockZoom = new PdnMenuItem(ActionType.LockZoom);
  105. this.menuFixedMultiple = new PdnMenuItem(ActionType.FixedMultiple);
  106. //this.menuFixedMultiple.Visible = false;
  107. this.menuEditSeparator3 = new ToolStripSeparator();
  108. this.menuImageFlipHorizontal = new PdnMenuItem(ActionType.FlipHorizontal);
  109. this.menuImageFlipVertical = new PdnMenuItem(ActionType.FlipVertical);
  110. this.menuImageFlipCenter = new PdnMenuItem(ActionType.FlipCenter);
  111. this.menuEditSeparator4 = new ToolStripSeparator();
  112. this.menuImageRotate90CW = new PdnMenuItem(ActionType.Rotate90CW);
  113. this.menuImageRotate180 = new PdnMenuItem(ActionType.Rotate180);
  114. this.menuImageRotate90CCW = new PdnMenuItem(ActionType.Rotate90CCW);
  115. //
  116. // EditMenu
  117. //
  118. this.DropDownItems.AddRange(
  119. new ToolStripItem[]
  120. {
  121. this.menuEditUndo,
  122. this.menuEditRedo,
  123. this.menuEditCopy,
  124. this.menuEditPaste,
  125. this.menuEditDelete,
  126. this.menuEditSeparator1,
  127. this.menuViewZoomIn,
  128. this.menuViewZoomOut,
  129. this.menuViewActualSize,
  130. this.menuViewZoomToWindow,
  131. this.menuViewZoomToWidth,
  132. this.menuViewZoomToHeight,
  133. this.menuEditSeparator2,
  134. this.menuImageCut,
  135. this.menuLockZoom,
  136. this.menuFixedMultiple,
  137. this.menuEditSeparator3,
  138. this.menuImageFlipHorizontal,
  139. this.menuImageFlipVertical,
  140. this.menuImageFlipCenter,
  141. this.menuEditSeparator4,
  142. this.menuImageRotate90CW,
  143. this.menuImageRotate180,
  144. this.menuImageRotate90CCW
  145. }); ;
  146. this.Name = "Menu.Edit";
  147. this.Text = PdnResources.GetString("Menu.Edit.Text");
  148. //
  149. // 撤销
  150. //
  151. this.menuEditUndo.Click += new EventHandler(this.MenuEditUndo_Click);
  152. //
  153. // 恢复
  154. //
  155. this.menuEditRedo.Click += new EventHandler(this.MenuEditRedo_Click);
  156. //
  157. // 复制
  158. //
  159. this.menuEditCopy.Click += new EventHandler(this.MenuEditCopy_Click);
  160. //
  161. // 粘贴
  162. //
  163. this.menuEditPaste.Click += new EventHandler(this.MenuEditPaste_Click);
  164. //
  165. // 删除
  166. //
  167. this.menuEditDelete.Click += new EventHandler(this.MenuEditDelete_Click);
  168. //
  169. // 放大
  170. //
  171. this.menuViewZoomIn.ShortcutKeyDisplayString = PdnResources.GetString("Menu.View.ZoomIn.ShortcutKeyDisplayString");
  172. this.menuViewZoomIn.NeedWaitKey = true;
  173. this.menuViewZoomIn.Click += new EventHandler(this.MenuViewZoomIn_Click);
  174. //
  175. // 缩小
  176. //
  177. this.menuViewZoomOut.ShortcutKeyDisplayString = PdnResources.GetString("Menu.View.ZoomOut.ShortcutKeyDisplayString");
  178. this.menuViewZoomOut.NeedWaitKey = true;
  179. this.menuViewZoomOut.Click += new EventHandler(this.MenuViewZoomOut_Click);
  180. //
  181. // 实际大小
  182. //
  183. this.menuViewActualSize.NeedWaitKey = true;
  184. this.menuViewActualSize.Click += new EventHandler(this.MenuViewActualSize_Click);
  185. //
  186. // 合适大小
  187. //
  188. this.menuViewZoomToWindow.NeedWaitKey = true;
  189. this.menuViewZoomToWindow.Click += new EventHandler(this.MenuViewZoomToWindow_Click);
  190. //
  191. // 合适宽度
  192. //
  193. this.menuViewZoomToWidth.NeedWaitKey = true;
  194. this.menuViewZoomToWidth.Click += new EventHandler(this.MenuViewZoomToWidth_Click);
  195. //
  196. //
  197. // 合适高度
  198. this.menuViewZoomToHeight.NeedWaitKey = true;
  199. this.menuViewZoomToHeight.Click += new EventHandler(this.MenuViewZoomToHeight_Click);
  200. //
  201. // 图片裁剪
  202. //
  203. this.menuImageCut.NeedWaitKey = true;
  204. this.menuImageCut.AutomaticScript = false;
  205. this.menuImageCut.Click += new EventHandler(this.MenuImageCut_Click);
  206. //
  207. // 锁定扩缩
  208. //
  209. this.menuLockZoom.Click += new EventHandler(this.MenuLockZoom_Click);
  210. //
  211. // 定倍显示
  212. //
  213. this.menuFixedMultiple.Click += new EventHandler(this.MenuFixedMultiple_Click);
  214. //
  215. // 水平翻转
  216. //
  217. this.menuImageFlipHorizontal.Click += new EventHandler(this.MenuImageFlipHorizontal_Click);
  218. //
  219. // 垂直翻转
  220. //
  221. this.menuImageFlipVertical.Click += new EventHandler(this.MenuImageFlipVertical_Click);
  222. //
  223. // 中心翻转
  224. //
  225. this.menuImageFlipCenter.Click += new EventHandler(this.MenuImageFlipCenter_Click);
  226. //
  227. // 旋转90度
  228. //
  229. this.menuImageRotate90CW.Click += new EventHandler(this.MenuImageRotate90_Click);
  230. //this.menuImageRotate90CW.ShortcutKeys = Keys.Control | Keys.J;
  231. //
  232. // 旋转180度
  233. //
  234. this.menuImageRotate180.Click += new EventHandler(this.MenuImageRotate180_Click);
  235. //this.menuImageRotate180.ShortcutKeys = Keys.Control | Keys.J;
  236. //
  237. // 旋转270度
  238. //
  239. this.menuImageRotate90CCW.Click += new EventHandler(this.MenuImageRotate270_Click);
  240. //this.menuImageRotate90CCW.ShortcutKeys = Keys.Control | Keys.J;
  241. //
  242. // 加载菜单的文字和icon
  243. //
  244. this.LoadNames(this.Name);
  245. this.LoadIcons();
  246. }
  247. protected override void OnDropDownOpening(EventArgs e)
  248. {
  249. this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.ActualSize : false;
  250. this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.SuitableSize : false;
  251. this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.SuitableWidth : false;
  252. this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.SuitableHeight : false;
  253. this.menuLockZoom.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.LockZoom : false;
  254. this.menuFixedMultiple.Checked = AppWorkspace.ActiveDocumentWorkspace != null ? AppWorkspace.ActiveDocumentWorkspace.FixedMultiple : false;
  255. if (AppWorkspace.ActiveDocumentWorkspace == null/* || AppWorkspace.ScriptRunning*/)
  256. {
  257. this.menuViewZoomToWindow.Enabled = false;
  258. this.menuViewActualSize.Enabled = false;
  259. this.menuEditCopy.Enabled = false;
  260. this.menuEditDelete.Enabled = false;
  261. this.menuLockZoom.Checked = false;
  262. this.menuFixedMultiple.Enabled = false;
  263. }
  264. else
  265. {
  266. this.menuViewZoomToWindow.Enabled = true;
  267. //this.menuViewZoomToSelection.Enabled = !AppWorkspace.ActiveDocumentWorkspace.Selection.IsEmpty;
  268. this.menuViewActualSize.Enabled = true;
  269. this.menuEditCopy.Enabled = true;
  270. //this.menuLockZoom.Checked = AppWorkspace.isLockZoom;
  271. this.menuEditDelete.Enabled = false;
  272. if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList != null && AppWorkspace.ActiveDocumentWorkspace.GraphicsList.Count > 0)
  273. {
  274. for (int i = 0; i < AppWorkspace.ActiveDocumentWorkspace.GraphicsList.Count; i++)
  275. {
  276. if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i].Selected)
  277. {
  278. this.menuEditDelete.Enabled = true;
  279. break;
  280. }
  281. }
  282. }
  283. //this.menuViewZoomToWindow.Checked = (AppWorkspace.ActiveDocumentWorkspace.ZoomBasis == ZoomBasis.FitToWindow);
  284. this.menuFixedMultiple.Enabled = true;
  285. }
  286. if (copyedBitmap != null/* && !AppWorkspace.ScriptRunning*/)
  287. this.menuEditPaste.Enabled = true;
  288. else
  289. this.menuEditPaste.Enabled = false;
  290. //this.menuEditDelete.Enabled = selection;
  291. //this.menuEditCut.Enabled = selection && bitmapLayer;
  292. // find out if there's anything on the clipboard that we can use
  293. //bool isClipImageAvailable = Utility.IsClipboardImageAvailable();
  294. //this.menuEditPaste.Enabled = isClipImageAvailable && (AppWorkspace.ActiveDocumentWorkspace != null);
  295. /**
  296. if (!this.menuEditPaste.Enabled)
  297. {
  298. if (AppWorkspace.ActiveDocumentWorkspace != null)
  299. {
  300. bool canHandle;
  301. try
  302. {
  303. IDataObject pasted = Clipboard.GetDataObject();
  304. }
  305. catch (ExternalException)
  306. {
  307. canHandle = false;
  308. }
  309. if (canHandle)
  310. {
  311. this.menuEditPaste.Enabled = true;
  312. }
  313. }
  314. }**/
  315. if (AppWorkspace.ActiveDocumentWorkspace != null/* && !AppWorkspace.ScriptRunning*/)
  316. {
  317. this.menuEditUndo.Enabled = (AppWorkspace.ActiveDocumentWorkspace.undoManager.CanUndo);// (AppWorkspace.ActiveDocumentWorkspace.History.UndoStack.Count > 1); // top of stack is always assumed to be a "NullHistoryMemento," which is not undoable! thus we don't count it
  318. this.menuEditRedo.Enabled = (AppWorkspace.ActiveDocumentWorkspace.undoManager.CanRedo);// (AppWorkspace.ActiveDocumentWorkspace.History.RedoStack.Count > 0);
  319. }
  320. else
  321. {
  322. this.menuEditUndo.Enabled = false;
  323. this.menuEditRedo.Enabled = false;
  324. }
  325. //this.RecursiveData(this.DropDownItems);
  326. base.OnDropDownOpening(e);
  327. }
  328. /// <summary>
  329. /// 撤销
  330. /// </summary>
  331. /// <param name="sender"></param>
  332. /// <param name="e"></param>
  333. private void MenuEditUndo_Click(object sender, EventArgs e)
  334. {
  335. if (_p2Form != null)
  336. {
  337. _p2Form._document.undoManager.Undo();
  338. _p2Form._document.Refresh();
  339. }
  340. else
  341. if (AppWorkspace.ActiveDocumentWorkspace != null)
  342. {
  343. if (AppWorkspace.startScriptRecording)
  344. {
  345. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  346. }
  347. AppWorkspace.ActiveDocumentWorkspace.undoManager.Undo();
  348. AppWorkspace.ActiveDocumentWorkspace.Refresh();
  349. }
  350. }
  351. /// <summary>
  352. /// 恢复
  353. /// </summary>
  354. /// <param name="sender"></param>
  355. /// <param name="e"></param>
  356. private void MenuEditRedo_Click(object sender, EventArgs e)
  357. {
  358. if (_p2Form != null)
  359. {
  360. _p2Form._document.undoManager.Redo();
  361. _p2Form._document.Refresh();
  362. }
  363. if (AppWorkspace.ActiveDocumentWorkspace != null)
  364. {
  365. if (AppWorkspace.startScriptRecording)
  366. {
  367. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  368. }
  369. AppWorkspace.ActiveDocumentWorkspace.undoManager.Redo();
  370. AppWorkspace.ActiveDocumentWorkspace.Refresh();
  371. }
  372. /**
  373. if (AppWorkspace.ActiveDocumentWorkspace != null &&
  374. !AppWorkspace.ActiveDocumentWorkspace.IsMouseCaptured())
  375. {
  376. AppWorkspace.ActiveDocumentWorkspace.PerformAction(new HistoryRedoAction());
  377. }**/
  378. }
  379. /// <summary>
  380. /// 复制
  381. /// </summary>
  382. /// <param name="sender"></param>
  383. /// <param name="e"></param>
  384. private void MenuEditCopy_Click(object sender, EventArgs e)
  385. {
  386. if (AppWorkspace.ActiveDocumentWorkspace != null && AppWorkspace.ActiveDocumentWorkspace.CompositionSurface != null)
  387. {
  388. if (AppWorkspace.startScriptRecording)
  389. {
  390. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  391. }
  392. Bitmap temp = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreateAliasedBitmap();
  393. copyedBitmap = new Bitmap(temp.Width, temp.Height);
  394. Graphics graphics = Graphics.FromImage(copyedBitmap);
  395. graphics.DrawImage(temp, 0, 0, temp.Width, temp.Height);
  396. if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList.IsExsitSpecificObject(DrawToolType.ImageCut))
  397. {
  398. //获取裁剪的矩形区域
  399. List<DrawObject> objList = AppWorkspace.ActiveDocumentWorkspace.GraphicsList.GetDrawToolTypeList(DrawToolType.ImageCut);
  400. ImageCutDraw imageCutDraw = (ImageCutDraw)objList[0];
  401. RectangleF cutRectangle = imageCutDraw.Rectangle;
  402. copyedBitmap = DrawRulerHelper.KiCut(copyedBitmap, (int)cutRectangle.X, (int)cutRectangle.Y, (int)cutRectangle.Width, (int)cutRectangle.Height);
  403. }
  404. }
  405. }
  406. /// <summary>
  407. /// 粘贴
  408. /// </summary>
  409. /// <param name="sender"></param>
  410. /// <param name="e"></param>
  411. private void MenuEditPaste_Click(object sender, EventArgs e)
  412. {
  413. if (copyedBitmap != null)
  414. {
  415. if (AppWorkspace.startScriptRecording)
  416. {
  417. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  418. }
  419. DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
  420. Document document = Document.FromImageMat(Camera.Tools.ToMat(copyedBitmap));
  421. dw.Document = document;
  422. //图片命名
  423. nameNum++;
  424. int numLength = nameNum.ToString().Length;
  425. string joinName = "";
  426. switch (numLength)
  427. {
  428. case 1:
  429. joinName = "00" + nameNum;
  430. break;
  431. case 2:
  432. joinName = "0" + nameNum;
  433. break;
  434. default:
  435. joinName = nameNum.ToString();
  436. break;
  437. }
  438. dw.xmlSaveModel = AppWorkspace.ActiveDocumentWorkspace.xmlSaveModel;
  439. dw.rules = AppWorkspace.ActiveDocumentWorkspace.rules;
  440. dw.fileText = PdnResources.GetString("Menu.Copythepicture.Text") + "-" + joinName;
  441. AppWorkspace.ActiveDocumentWorkspace = dw;
  442. }
  443. }
  444. /// <summary>
  445. /// 删除
  446. /// </summary>
  447. /// <param name="sender"></param>
  448. /// <param name="e"></param>
  449. private void MenuEditDelete_Click(object sender, EventArgs e)
  450. {
  451. if (AppWorkspace.ActiveDocumentWorkspace != null)
  452. {
  453. if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList != null && AppWorkspace.ActiveDocumentWorkspace.GraphicsList.Count > 0)
  454. {
  455. if (AppWorkspace.startScriptRecording)
  456. {
  457. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  458. }
  459. for (int i = AppWorkspace.ActiveDocumentWorkspace.GraphicsList.Count - 1; i >= 0; i--)
  460. {
  461. if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i].Selected == true)
  462. {
  463. //对数字标记做单独处理
  464. if (AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i].drawToolType == DrawToolType.DrawNumberMark)
  465. {
  466. DrawNumberMark drawNumberMark = (DrawNumberMark)AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i];
  467. List<DrawObject> objList = AppWorkspace.ActiveDocumentWorkspace.GraphicsList.GetDrawToolTypeList(DrawToolType.DrawNumberMark);
  468. if (objList != null && objList.Count > 0)
  469. {
  470. for (int j = 0; j < objList.Count; j++)
  471. {
  472. DrawNumberMark modifyNum = (DrawNumberMark)objList[j];
  473. if (modifyNum.nowNum > drawNumberMark.nowNum)
  474. {
  475. modifyNum.nowNum -= 1;
  476. }
  477. }
  478. }
  479. }
  480. AppWorkspace.ActiveDocumentWorkspace.GraphicsList.RemoveObj(AppWorkspace.ActiveDocumentWorkspace.GraphicsList[i]);
  481. }
  482. }
  483. AppWorkspace.ActiveDocumentWorkspace.Refresh();
  484. }
  485. }
  486. }
  487. private void MenuViewZoomIn_Click(object sender, EventArgs e)
  488. {
  489. if (AppWorkspace.ActiveDocumentWorkspace != null)
  490. {
  491. if (AppWorkspace.startScriptRecording)
  492. {
  493. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  494. }
  495. AppWorkspace.ActiveDocumentWorkspace.ZoomIn();
  496. }
  497. }
  498. private void MenuViewZoomOut_Click(object sender, EventArgs e)
  499. {
  500. if (AppWorkspace.ActiveDocumentWorkspace != null)
  501. {
  502. if (AppWorkspace.startScriptRecording)
  503. {
  504. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  505. }
  506. AppWorkspace.ActiveDocumentWorkspace.ZoomOut();
  507. }
  508. }
  509. private void MenuViewActualSize_Click(object sender, EventArgs e)
  510. {
  511. if (AppWorkspace.ActiveDocumentWorkspace != null)
  512. {
  513. if (AppWorkspace.startScriptRecording)
  514. {
  515. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  516. }
  517. if (!AppWorkspace.ActiveDocumentWorkspace.ActualSize)
  518. {
  519. AppWorkspace.ActiveDocumentWorkspace.ActualSize = !AppWorkspace.ActiveDocumentWorkspace.ActualSize;
  520. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
  521. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
  522. this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace.ActualSize;
  523. AppWorkspace.ActiveDocumentWorkspace.SuitableSize = false;
  524. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
  525. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
  526. this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
  527. AppWorkspace.ActiveDocumentWorkspace.SuitableWidth = false;
  528. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
  529. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
  530. this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
  531. AppWorkspace.ActiveDocumentWorkspace.SuitableHeight = false;
  532. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
  533. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
  534. this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
  535. }
  536. else
  537. {
  538. AppWorkspace.ActiveDocumentWorkspace.ActualSize = !AppWorkspace.ActiveDocumentWorkspace.ActualSize;
  539. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
  540. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
  541. this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace.ActualSize;
  542. this.AppWorkspace.UpdateBottomButtonSelectionStatus();
  543. }
  544. AppWorkspace.UpdateBottomButtonSelectionStatus();
  545. AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.ScaleFactor;
  546. AppWorkspace.ActiveDocumentWorkspace.ScaleFactor = ScaleFactor.OneToOne;
  547. }
  548. }
  549. private void MenuViewZoomToWindow_Click(object sender, EventArgs e)
  550. {
  551. if (AppWorkspace.ActiveDocumentWorkspace != null)
  552. {
  553. if (AppWorkspace.startScriptRecording)
  554. {
  555. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  556. }
  557. if (!AppWorkspace.ActiveDocumentWorkspace.SuitableSize)
  558. {
  559. AppWorkspace.ActiveDocumentWorkspace.SuitableSize = !AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
  560. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
  561. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
  562. this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
  563. AppWorkspace.ActiveDocumentWorkspace.ActualSize = false;
  564. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
  565. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
  566. this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace.ActualSize;
  567. AppWorkspace.ActiveDocumentWorkspace.SuitableWidth = false;
  568. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
  569. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
  570. this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
  571. AppWorkspace.ActiveDocumentWorkspace.SuitableHeight = false;
  572. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
  573. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
  574. this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
  575. this.AppWorkspace.UpdateBottomButtonSelectionStatus();
  576. }
  577. else
  578. {
  579. AppWorkspace.ActiveDocumentWorkspace.SuitableSize = !AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
  580. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
  581. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
  582. this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
  583. this.AppWorkspace.UpdateBottomButtonSelectionStatus();
  584. }
  585. AppWorkspace.UpdateBottomButtonSelectionStatus();
  586. AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWindow;
  587. }
  588. }
  589. private void MenuViewZoomToWidth_Click(object sender, EventArgs e)
  590. {
  591. if (AppWorkspace.ActiveDocumentWorkspace != null)
  592. {
  593. if (AppWorkspace.startScriptRecording)
  594. {
  595. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  596. }
  597. if (!AppWorkspace.ActiveDocumentWorkspace.SuitableWidth)
  598. {
  599. AppWorkspace.ActiveDocumentWorkspace.SuitableWidth = !AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
  600. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
  601. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
  602. this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
  603. AppWorkspace.ActiveDocumentWorkspace.SuitableSize = false;
  604. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
  605. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
  606. this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
  607. AppWorkspace.ActiveDocumentWorkspace.ActualSize = false;
  608. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
  609. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
  610. this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace.ActualSize;
  611. AppWorkspace.ActiveDocumentWorkspace.SuitableHeight = false;
  612. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
  613. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
  614. this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
  615. this.AppWorkspace.UpdateBottomButtonSelectionStatus();
  616. }
  617. else
  618. {
  619. AppWorkspace.ActiveDocumentWorkspace.SuitableWidth = !AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
  620. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
  621. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
  622. this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
  623. this.AppWorkspace.UpdateBottomButtonSelectionStatus();
  624. }
  625. AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWidth;
  626. }
  627. }
  628. private void MenuViewZoomToHeight_Click(object sender, EventArgs e)
  629. {
  630. if (AppWorkspace.ActiveDocumentWorkspace != null)
  631. {
  632. if (AppWorkspace.startScriptRecording)
  633. {
  634. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  635. }
  636. if (!AppWorkspace.ActiveDocumentWorkspace.SuitableHeight)
  637. {
  638. AppWorkspace.ActiveDocumentWorkspace.SuitableHeight = !AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
  639. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
  640. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
  641. this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
  642. AppWorkspace.ActiveDocumentWorkspace.SuitableWidth = false;
  643. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
  644. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableWidth, "ZoomToWidth");
  645. this.menuViewZoomToWidth.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableWidth;
  646. AppWorkspace.ActiveDocumentWorkspace.SuitableSize = false;
  647. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
  648. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableSize, "ZoomToWindow");
  649. this.menuViewZoomToWindow.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableSize;
  650. AppWorkspace.ActiveDocumentWorkspace.ActualSize = false;
  651. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
  652. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.ActualSize, "ActualSize");
  653. this.menuViewActualSize.Checked = AppWorkspace.ActiveDocumentWorkspace.ActualSize;
  654. this.AppWorkspace.UpdateBottomButtonSelectionStatus();
  655. }
  656. else
  657. {
  658. AppWorkspace.ActiveDocumentWorkspace.SuitableHeight = !AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
  659. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
  660. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.SuitableHeight, "ZoomToHeight");
  661. this.menuViewZoomToHeight.Checked = AppWorkspace.ActiveDocumentWorkspace.SuitableHeight;
  662. this.AppWorkspace.UpdateBottomButtonSelectionStatus();
  663. }
  664. AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToHeight;
  665. }
  666. }
  667. private void MenuImageCut_Click(object sender, EventArgs e)
  668. {
  669. if (AppWorkspace.ActiveDocumentWorkspace != null)
  670. {
  671. if (AppWorkspace.startScriptRecording)
  672. {
  673. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  674. }
  675. AppWorkspace.ActiveDocumentWorkspace.ActiveTool = DrawToolType.ImageCut;
  676. }
  677. }
  678. /// <summary>
  679. /// 锁定扩缩
  680. /// </summary>
  681. /// <param name="sender"></param>
  682. /// <param name="e"></param>
  683. private void MenuLockZoom_Click(object sender, EventArgs e)
  684. {
  685. if (AppWorkspace.ActiveDocumentWorkspace != null)
  686. {
  687. if (AppWorkspace.startScriptRecording)
  688. {
  689. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  690. }
  691. AppWorkspace.ActiveDocumentWorkspace.LockZoom = !AppWorkspace.ActiveDocumentWorkspace.LockZoom;
  692. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.LockZoom, "LockZoom");
  693. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.LockZoom, "LockZoom");
  694. this.menuLockZoom.Checked = !this.menuLockZoom.Checked;
  695. AppWorkspace.UpdateBottomButtonSelectionStatus();
  696. AppWorkspace.isLockZoom = this.menuLockZoom.Checked;
  697. AppWorkspace.lockScaleRatio = AppWorkspace.ActiveDocumentWorkspace.ScaleFactor.Ratio;
  698. }
  699. }
  700. /// <summary>
  701. /// 定倍显示
  702. /// </summary>
  703. /// <param name="sender"></param>
  704. /// <param name="e"></param>
  705. private void MenuFixedMultiple_Click(object sender, EventArgs e)
  706. {
  707. if (AppWorkspace.ActiveDocumentWorkspace != null)
  708. {
  709. if (AppWorkspace.startScriptRecording)
  710. {
  711. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  712. }
  713. AppWorkspace.ActiveDocumentWorkspace.FixedMultiple = !AppWorkspace.ActiveDocumentWorkspace.FixedMultiple;
  714. this.AppWorkspace.toolBar.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.FixedMultiple, "FixedMultiple");
  715. this.AppWorkspace.toolsPanel.RefreshBtnSelect(AppWorkspace.ActiveDocumentWorkspace.FixedMultiple, "FixedMultiple");
  716. this.menuFixedMultiple.Checked = AppWorkspace.ActiveDocumentWorkspace.FixedMultiple;
  717. int dotPitch = Startup.instance.configModel.DotPitchId;//获取系统激活的点距id
  718. if (dotPitch <= 0)
  719. {
  720. MessageBox.Show(PdnResources.GetString("Menu.hedotdistancefirstandthenadjustthedisplayoperation.Text") + "!");
  721. return;
  722. }
  723. mic_screen_rules screenList = mic_screen_rules_BLL.FindDefault(dotPitch);//从数据库查询点距具体信息
  724. if (screenList == null)
  725. {
  726. MessageBox.Show(PdnResources.GetString("Menu.Failedtogetpointdistanceinformation.Text"));
  727. return;
  728. }
  729. double pointPitch = 0;
  730. try
  731. {
  732. pointPitch = double.Parse(screenList.point_pitch);//获取点距
  733. }
  734. catch (System.Exception)
  735. {
  736. MessageBox.Show(PdnResources.GetString("Menu.Pointdistanceinformationexception.Text"));
  737. return;
  738. }
  739. if (pointPitch <= 0)
  740. {
  741. MessageBox.Show(PdnResources.GetString("Menu.Pointdistanceinformationexception.Text"));
  742. return;
  743. }
  744. string imgName = AppWorkspace.ActiveDocumentWorkspace.GetFriendlyName();//原始图片名
  745. Bitmap oldBit = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreateAliasedBitmap();//原始图片
  746. //获取系统的毫米标尺
  747. double unitLength = 0;
  748. //AppWorkspace.getMeasureInfo().TryGetValue(MeasurementUnit.Millimeter, out unitLength);
  749. unitLength = AppWorkspace.ActiveDocumentWorkspace.GetRuler(MeasurementUnit.Millimeter);
  750. if (unitLength == 0)
  751. unitLength = 1;
  752. int oldWidth = oldBit.Width;
  753. int oldHeight = oldBit.Height;
  754. int targetWidth = 0;
  755. int targetHeight = 0;
  756. if (oldWidth <= 1 || oldHeight <= 1)//像素最小为1,之后不再处理
  757. return;
  758. double pantographRatio = unitLength / pointPitch;//缩放比
  759. double aspectRatio = oldWidth / (oldHeight * 1d);//宽高比
  760. if (oldWidth <= oldHeight)
  761. {
  762. if (Startup.instance.ruleDB != null)
  763. targetWidth = (int)(oldWidth * pantographRatio * (double)Startup.instance.ruleDB.gain_multiple);
  764. else
  765. targetWidth = (int)(oldWidth * pantographRatio);
  766. if (targetWidth < 1 || targetWidth > oldWidth)//像素值异常不做处理
  767. return;
  768. targetHeight = (int)(targetWidth / aspectRatio);
  769. }
  770. else
  771. {
  772. if (Startup.instance.ruleDB != null)
  773. targetHeight = (int)(oldHeight * pantographRatio * (double)Startup.instance.ruleDB.gain_multiple);
  774. else
  775. targetHeight = (int)(oldHeight * pantographRatio);
  776. if (targetHeight < 1 || targetHeight > oldHeight)//像素值异常不做处理
  777. return;
  778. targetWidth = (int)(targetHeight * aspectRatio);
  779. }
  780. //缩放图片
  781. using (Bitmap targetBit = new Bitmap(targetWidth, targetHeight))
  782. {
  783. using (Graphics g = Graphics.FromImage(targetBit))
  784. {
  785. g.DrawImage(oldBit, new Rectangle(0, 0, targetWidth, targetHeight), new Rectangle(0, 0, oldWidth, oldHeight), GraphicsUnit.Pixel);
  786. DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
  787. Document document = Document.FromImageMat(Camera.Tools.ToMat(targetBit));
  788. dw.Document = document;
  789. dw.xmlSaveModel = this.AppWorkspace.ActiveDocumentWorkspace.xmlSaveModel;
  790. dw.rules = this.AppWorkspace.ActiveDocumentWorkspace.rules;
  791. dw.fileText = imgName;
  792. AppWorkspace.ActiveDocumentWorkspace = dw;
  793. }
  794. }
  795. }
  796. }
  797. /// <summary>
  798. /// 水平镜像
  799. /// </summary>
  800. /// <param name="sender"></param>
  801. /// <param name="e"></param>
  802. private void MenuImageFlipHorizontal_Click(object sender, EventArgs e)
  803. {
  804. if (AppWorkspace.ActiveDocumentWorkspace != null)
  805. {
  806. if (AppWorkspace.startScriptRecording)
  807. {
  808. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  809. }
  810. AppWorkspace.HorizontalMirroringButton_Click(sender, null);
  811. }
  812. }
  813. /// <summary>
  814. /// 垂直镜像
  815. /// </summary>
  816. /// <param name="sender"></param>
  817. /// <param name="e"></param>
  818. private void MenuImageFlipVertical_Click(object sender, EventArgs e)
  819. {
  820. if (AppWorkspace.ActiveDocumentWorkspace != null)
  821. {
  822. if (AppWorkspace.startScriptRecording)
  823. {
  824. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  825. }
  826. AppWorkspace.VerticalMirrorButton_Click(sender, null);
  827. }
  828. }
  829. /// <summary>
  830. /// 中心镜像
  831. /// </summary>
  832. /// <param name="sender"></param>
  833. /// <param name="e"></param>
  834. private void MenuImageFlipCenter_Click(object sender, EventArgs e)
  835. {
  836. if (AppWorkspace.ActiveDocumentWorkspace != null)
  837. {
  838. if (AppWorkspace.startScriptRecording)
  839. {
  840. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  841. }
  842. AppWorkspace.CenterMirrorButton_Click(sender, null);
  843. }
  844. }
  845. /// <summary>
  846. /// 旋转90度
  847. /// </summary>
  848. /// <param name="sender"></param>
  849. /// <param name="e"></param>
  850. private void MenuImageRotate90_Click(object sender, EventArgs e)
  851. {
  852. if (AppWorkspace.ActiveDocumentWorkspace != null)
  853. {
  854. if (AppWorkspace.startScriptRecording)
  855. {
  856. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  857. }
  858. Mat src = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreatedAliasedMat();
  859. Mat dst = new Mat();
  860. GeometryIntent.ImageRotate(src, dst, FlipMode.Y);//待测试
  861. if (AppWorkspace.ScriptRunning)
  862. {
  863. DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
  864. Document document = Document.FromImageMat(dst);
  865. dw.Document = document;
  866. dw.fileText = PdnResources.GetString("Menu.Edit.Text") + "-" + ((PdnMenuItem)sender).Text + "-" + Startup.instance.step_length;
  867. AppWorkspace.ActiveDocumentWorkspace = dw;
  868. Startup.instance.step_length += 1;
  869. }
  870. else
  871. {
  872. ZoomBasis zoom = AppWorkspace.ActiveDocumentWorkspace.ZoomBasis;
  873. AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWindow;
  874. Document document = Document.FromImageMat(dst);
  875. AppWorkspace.ActiveDocumentWorkspace.Document = document;
  876. AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = zoom;
  877. AppWorkspace.ActiveDocumentWorkspace.Refresh();
  878. }
  879. }
  880. }
  881. /// <summary>
  882. /// 旋转180度
  883. /// </summary>
  884. /// <param name="sender"></param>
  885. /// <param name="e"></param>
  886. private void MenuImageRotate180_Click(object sender, EventArgs e)
  887. {
  888. if (AppWorkspace.ActiveDocumentWorkspace != null)
  889. {
  890. if (AppWorkspace.startScriptRecording)
  891. {
  892. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  893. }
  894. Mat src = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreatedAliasedMat();
  895. Mat dst = new Mat();
  896. GeometryIntent.ImageRotate(src, dst, FlipMode.XY);//待测试
  897. if (AppWorkspace.ScriptRunning)
  898. {
  899. DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
  900. Document document = Document.FromImageMat(dst);
  901. dw.Document = document;
  902. dw.fileText = PdnResources.GetString("Menu.Edit.Text") + "-" + ((PdnMenuItem)sender).Text + "-" + Startup.instance.step_length;
  903. AppWorkspace.ActiveDocumentWorkspace = dw;
  904. Startup.instance.step_length += 1;
  905. }
  906. else
  907. {
  908. ZoomBasis zoom = AppWorkspace.ActiveDocumentWorkspace.ZoomBasis;
  909. AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWindow;
  910. Document document = Document.FromImageMat(dst);
  911. AppWorkspace.ActiveDocumentWorkspace.Document = document;
  912. AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = zoom;
  913. AppWorkspace.ActiveDocumentWorkspace.Refresh();
  914. }
  915. }
  916. }
  917. /// <summary>
  918. /// 旋转270度
  919. /// </summary>
  920. /// <param name="sender"></param>
  921. /// <param name="e"></param>
  922. private void MenuImageRotate270_Click(object sender, EventArgs e)
  923. {
  924. if (AppWorkspace.ActiveDocumentWorkspace != null)
  925. {
  926. if (AppWorkspace.startScriptRecording)
  927. {
  928. AppWorkspace.SetScriptStartRecording(((PdnMenuItem)sender).MenuId, ((PdnMenuItem)sender).Text, new List<Args>());
  929. }
  930. Mat src = AppWorkspace.ActiveDocumentWorkspace.CompositionSurface.CreatedAliasedMat();
  931. Mat dst = new Mat();
  932. GeometryIntent.ImageRotate(src, dst, FlipMode.X);//待测试
  933. if (AppWorkspace.ScriptRunning)
  934. {
  935. DocumentWorkspace dw = AppWorkspace.AddNewDocumentWorkspace();
  936. Document document = Document.FromImageMat(dst);
  937. dw.Document = document;
  938. dw.fileText = PdnResources.GetString("Menu.Edit.Text") + "-" + ((PdnMenuItem)sender).Text + "-" + Startup.instance.step_length;
  939. AppWorkspace.ActiveDocumentWorkspace = dw;
  940. Startup.instance.step_length += 1;
  941. }
  942. else
  943. {
  944. ZoomBasis zoom = AppWorkspace.ActiveDocumentWorkspace.ZoomBasis;
  945. AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWindow;
  946. Document document = Document.FromImageMat(dst);
  947. AppWorkspace.ActiveDocumentWorkspace.Document = document;
  948. AppWorkspace.ActiveDocumentWorkspace.ZoomBasis = zoom;
  949. AppWorkspace.ActiveDocumentWorkspace.Refresh();
  950. }
  951. }
  952. }
  953. }
  954. }