ArtworkPointUserControl.cs 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725
  1. using System;
  2. using System.Drawing;
  3. using System.Drawing.Drawing2D;
  4. using System.Windows.Forms;
  5. using Metis.ParameterSet;
  6. using PaintDotNet.Adjust.BaseImage;
  7. using PaintDotNet.Annotation;
  8. using PaintDotNet.Annotation.Enum;
  9. using PaintDotNet.Base.CommTool;
  10. using PaintDotNet.CustomControl;
  11. namespace PaintDotNet.GeneralAnalysis.Artwork
  12. {
  13. internal partial class ArtworkPointUserControl : ArtworkUserControl
  14. {
  15. private AppWorkspace m_appWorkspace;
  16. private DocumentWorkspaceWindow m_artWorkspace;
  17. private DocumentWorkspaceWindow m_targetWorkspace;
  18. private Bitmap m_selectedBitmap;
  19. private int m_selectedIndex;
  20. private int m_targetPoint1X;
  21. private int m_targetPoint1Y;
  22. private int m_targetPoint2X;
  23. private int m_targetPoint2Y;
  24. private ArtworkControlButtons m_artCommonControlButtons;
  25. private ArtworkControlButtons m_targetCommonControlButtons;
  26. private void InitializeLanguageText()
  27. {
  28. this.groupBox1.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.Targetpicture.text");
  29. this.label2.Text = PdnResources.GetString("Menu.transparency.text");
  30. this.chkLine.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.displayauxiliarylines.text");
  31. this.chkGrids.Text = PdnResources.GetString("Menu.displaygrid.text");
  32. this.groupBox4.Text = PdnResources.GetString("Menu.Setting.Text");
  33. this.groupBox3.Text = PdnResources.GetString("Menu.Processdrawing.Text");
  34. this.groupBox2.Text = PdnResources.GetString("Menu.fixedpointtoenlargethdisplayarea.Text");
  35. this.groupBox5.Text = PdnResources.GetString("Menu.Generalanalysis.Processmparison.Targetgraphcontrol.text");
  36. this.label1.Text = PdnResources.GetString("Menu.transparency.text");
  37. }
  38. public ArtworkPointUserControl(AppWorkspace appWorkspace, int width, int height)
  39. {
  40. m_appWorkspace = appWorkspace;
  41. InitializeComponent();
  42. InitializeLanguageText();
  43. this.Width = width;
  44. this.Height = height;
  45. InitializeData();
  46. InitializeArtBaseTool();
  47. InitializeTargetBaseTool();
  48. }
  49. private void InitializeData()
  50. {
  51. this.m_artWorkspace = new DocumentWorkspaceWindow(m_appWorkspace);
  52. this.m_artWorkspace.AppWorkspaceTop = m_appWorkspace;
  53. this.m_artWorkspace.Visible = true;
  54. this.m_artWorkspace.Dock = DockStyle.Fill;
  55. this.pnlArt.Controls.Add(this.m_artWorkspace);
  56. this.m_artWorkspace.GraphicsList.SelectChanged += ArtGraphicsList_SelectChanged;
  57. this.m_targetWorkspace = new DocumentWorkspaceWindow(m_appWorkspace);
  58. this.m_targetWorkspace.AppWorkspaceTop = m_appWorkspace;
  59. this.m_targetWorkspace.Visible = true;
  60. this.m_targetWorkspace.Dock = DockStyle.Fill;
  61. this.pnlTarget.Controls.Add(this.m_targetWorkspace);
  62. this.m_targetWorkspace.GraphicsList.SelectChanged += TargetGraphicsList_SelectChanged;
  63. Init();
  64. }
  65. #region 初始化基础工具
  66. /// <summary>
  67. /// 初始化基础工具
  68. /// </summary>
  69. public void InitializeTargetBaseTool()
  70. {
  71. this.m_targetCommonControlButtons = new ArtworkControlButtons();
  72. this.m_targetCommonControlButtons.Dock = DockStyle.Top;
  73. this.m_targetCommonControlButtons.Height = 30;
  74. this.pnlTargetTools.Controls.Add(m_targetCommonControlButtons);
  75. this.m_targetCommonControlButtons.zoomInButton.Click += new EventHandler(zoomInButtonTarget_Click);
  76. this.m_targetCommonControlButtons.zoomOutButton.Click += new EventHandler(zoomOutButtonTarget_Click);
  77. this.m_targetCommonControlButtons.zoomToWindowButton.Click += new EventHandler(zoomToWindowButtonTarget_Click);
  78. this.m_targetCommonControlButtons.actualSizeButton.Click += new EventHandler(actualSizeButtonTarget_Click);
  79. this.m_targetCommonControlButtons.pointerButton.Click += new EventHandler(pointerButtonTarget_Click);
  80. this.m_targetCommonControlButtons.mobileModeButton.Click += new EventHandler(mobileModeButtonTarget_Click);
  81. this.m_targetCommonControlButtons.moveUpButton.Click += new EventHandler(moveUpButtonTarget_Click);
  82. this.m_targetCommonControlButtons.moveDownButton.Click += new EventHandler(moveDownButtonTarget_Click);
  83. this.m_targetCommonControlButtons.moveLeftButton.Click += new EventHandler(moveLeftButtonTarget_Click);
  84. this.m_targetCommonControlButtons.moveRightButton.Click += new EventHandler(moveRightButtonTarget_Click);
  85. }
  86. private void moveUpButtonTarget_Click(object sender, EventArgs e)
  87. {
  88. if (this.m_targetWorkspace.CompositionSurface != null)
  89. {
  90. for (int i = 0; i < this.m_targetWorkspace.GraphicsList.Count; i++)
  91. {
  92. if (this.m_targetWorkspace.GraphicsList[i].Selected)
  93. {
  94. RectangleF rectangleF = this.m_targetWorkspace.GraphicsList[i].Rectangle;
  95. this.m_targetWorkspace.GraphicsList[i].Rectangle = new RectangleF(rectangleF.X, rectangleF.Y - 1, rectangleF.Width, rectangleF.Height);
  96. this.m_targetWorkspace.Refresh();
  97. return;
  98. }
  99. }
  100. }
  101. }
  102. private void moveDownButtonTarget_Click(object sender, EventArgs e)
  103. {
  104. if (this.m_targetWorkspace.CompositionSurface != null)
  105. {
  106. for (int i = 0; i < this.m_targetWorkspace.GraphicsList.Count; i++)
  107. {
  108. if (this.m_targetWorkspace.GraphicsList[i].Selected)
  109. {
  110. RectangleF rectangleF = this.m_targetWorkspace.GraphicsList[i].Rectangle;
  111. this.m_targetWorkspace.GraphicsList[i].Rectangle = new RectangleF(rectangleF.X, rectangleF.Y + 1, rectangleF.Width, rectangleF.Height);
  112. this.m_targetWorkspace.Refresh();
  113. return;
  114. }
  115. }
  116. }
  117. }
  118. private void moveLeftButtonTarget_Click(object sender, EventArgs e)
  119. {
  120. if (this.m_targetWorkspace.CompositionSurface != null)
  121. {
  122. for (int i = 0; i < this.m_targetWorkspace.GraphicsList.Count; i++)
  123. {
  124. if (this.m_targetWorkspace.GraphicsList[i].Selected)
  125. {
  126. RectangleF rectangleF = this.m_targetWorkspace.GraphicsList[i].Rectangle;
  127. this.m_targetWorkspace.GraphicsList[i].Rectangle = new RectangleF(rectangleF.X - 1, rectangleF.Y, rectangleF.Width, rectangleF.Height);
  128. this.m_targetWorkspace.Refresh();
  129. return;
  130. }
  131. }
  132. }
  133. }
  134. private void moveRightButtonTarget_Click(object sender, EventArgs e)
  135. {
  136. if (this.m_targetWorkspace.CompositionSurface != null)
  137. {
  138. for (int i = 0; i < this.m_targetWorkspace.GraphicsList.Count; i++)
  139. {
  140. if (this.m_targetWorkspace.GraphicsList[i].Selected)
  141. {
  142. RectangleF rectangleF = this.m_targetWorkspace.GraphicsList[i].Rectangle;
  143. this.m_targetWorkspace.GraphicsList[i].Rectangle = new RectangleF(rectangleF.X + 1, rectangleF.Y, rectangleF.Width, rectangleF.Height);
  144. this.m_targetWorkspace.Refresh();
  145. return;
  146. }
  147. }
  148. }
  149. }
  150. private void mobileModeButtonTarget_Click(object sender, EventArgs e)
  151. {
  152. this.m_targetWorkspace.ActiveTool = Annotation.Enum.DrawToolType.MoveMode;
  153. }
  154. private void pointerButtonTarget_Click(object sender, EventArgs e)
  155. {
  156. this.m_targetWorkspace.ActiveTool = Annotation.Enum.DrawToolType.Pointer;
  157. }
  158. private void zoomToWindowButtonTarget_Click(object sender, EventArgs e)
  159. {
  160. if (this.m_targetWorkspace.CompositionSurface != null)
  161. {
  162. this.m_targetWorkspace.ZoomToWindow();
  163. }
  164. }
  165. private void actualSizeButtonTarget_Click(object sender, EventArgs e)
  166. {
  167. if (this.m_targetWorkspace.CompositionSurface != null)
  168. {
  169. this.m_targetWorkspace.ZoomBasis = ZoomBasis.ScaleFactor;
  170. this.m_targetWorkspace.ScaleFactor = ScaleFactor.OneToOne;
  171. }
  172. }
  173. private void zoomOutButtonTarget_Click(object sender, EventArgs e)
  174. {
  175. if (this.m_targetWorkspace.CompositionSurface != null)
  176. this.m_targetWorkspace.ZoomOut();
  177. }
  178. private void zoomInButtonTarget_Click(object sender, EventArgs e)
  179. {
  180. if (this.m_targetWorkspace.CompositionSurface != null)
  181. this.m_targetWorkspace.ZoomIn();
  182. }
  183. public void InitializeArtBaseTool()
  184. {
  185. this.m_artCommonControlButtons = new ArtworkControlButtons();
  186. this.m_artCommonControlButtons.Dock = DockStyle.Top;
  187. this.m_artCommonControlButtons.Height = 30;
  188. this.pnlArtTools.Controls.Add(m_artCommonControlButtons);
  189. this.m_artCommonControlButtons.zoomInButton.Click += new EventHandler(zoomInButton_Click);
  190. this.m_artCommonControlButtons.zoomOutButton.Click += new EventHandler(zoomOutButton_Click);
  191. this.m_artCommonControlButtons.zoomToWindowButton.Click += new EventHandler(zoomToWindowButton_Click);
  192. this.m_artCommonControlButtons.actualSizeButton.Click += new EventHandler(actualSizeButton_Click);
  193. this.m_artCommonControlButtons.pointerButton.Click += new EventHandler(pointerButton_Click);
  194. this.m_artCommonControlButtons.mobileModeButton.Click += new EventHandler(mobileModeButton_Click);
  195. this.m_artCommonControlButtons.moveUpButton.Click += new EventHandler(moveUpButton_Click);
  196. this.m_artCommonControlButtons.moveDownButton.Click += new EventHandler(moveDownButton_Click);
  197. this.m_artCommonControlButtons.moveLeftButton.Click += new EventHandler(moveLeftButton_Click);
  198. this.m_artCommonControlButtons.moveRightButton.Click += new EventHandler(moveRightButton_Click);
  199. }
  200. private void moveUpButton_Click(object sender, EventArgs e)
  201. {
  202. if (this.m_artWorkspace.CompositionSurface != null)
  203. {
  204. for (int i = 0; i < this.m_artWorkspace.GraphicsList.Count; i++)
  205. {
  206. if (this.m_artWorkspace.GraphicsList[i].Selected)
  207. {
  208. RectangleF rectangleF = this.m_artWorkspace.GraphicsList[i].Rectangle;
  209. this.m_artWorkspace.GraphicsList[i].Rectangle = new RectangleF(rectangleF.X, rectangleF.Y - 1, rectangleF.Width, rectangleF.Height);
  210. this.m_artWorkspace.Refresh();
  211. return;
  212. }
  213. }
  214. }
  215. }
  216. private void moveDownButton_Click(object sender, EventArgs e)
  217. {
  218. if (this.m_artWorkspace.CompositionSurface != null)
  219. {
  220. for (int i = 0; i < this.m_artWorkspace.GraphicsList.Count; i++)
  221. {
  222. if (this.m_artWorkspace.GraphicsList[i].Selected)
  223. {
  224. RectangleF rectangleF = this.m_artWorkspace.GraphicsList[i].Rectangle;
  225. this.m_artWorkspace.GraphicsList[i].Rectangle = new RectangleF(rectangleF.X, rectangleF.Y + 1, rectangleF.Width, rectangleF.Height);
  226. this.m_artWorkspace.Refresh();
  227. return;
  228. }
  229. }
  230. }
  231. }
  232. private void moveLeftButton_Click(object sender, EventArgs e)
  233. {
  234. if (this.m_artWorkspace.CompositionSurface != null)
  235. {
  236. for (int i = 0; i < this.m_artWorkspace.GraphicsList.Count; i++)
  237. {
  238. if (this.m_artWorkspace.GraphicsList[i].Selected)
  239. {
  240. RectangleF rectangleF = this.m_artWorkspace.GraphicsList[i].Rectangle;
  241. this.m_artWorkspace.GraphicsList[i].Rectangle = new RectangleF(rectangleF.X - 1, rectangleF.Y, rectangleF.Width, rectangleF.Height);
  242. this.m_artWorkspace.Refresh();
  243. return;
  244. }
  245. }
  246. }
  247. }
  248. private void moveRightButton_Click(object sender, EventArgs e)
  249. {
  250. if (this.m_artWorkspace.CompositionSurface != null)
  251. {
  252. for (int i = 0; i < this.m_artWorkspace.GraphicsList.Count; i++)
  253. {
  254. if (this.m_artWorkspace.GraphicsList[i].Selected)
  255. {
  256. RectangleF rectangleF = this.m_artWorkspace.GraphicsList[i].Rectangle;
  257. this.m_artWorkspace.GraphicsList[i].Rectangle = new RectangleF(rectangleF.X + 1, rectangleF.Y, rectangleF.Width, rectangleF.Height);
  258. this.m_artWorkspace.Refresh();
  259. return;
  260. }
  261. }
  262. }
  263. }
  264. private void mobileModeButton_Click(object sender, EventArgs e)
  265. {
  266. this.m_artWorkspace.ActiveTool = Annotation.Enum.DrawToolType.MoveMode;
  267. }
  268. private void pointerButton_Click(object sender, EventArgs e)
  269. {
  270. this.m_artWorkspace.ActiveTool = Annotation.Enum.DrawToolType.Pointer;
  271. }
  272. private void zoomToWindowButton_Click(object sender, EventArgs e)
  273. {
  274. if (this.m_artWorkspace.CompositionSurface != null)
  275. {
  276. this.m_artWorkspace.ZoomToWindow();
  277. }
  278. }
  279. private void actualSizeButton_Click(object sender, EventArgs e)
  280. {
  281. if (this.m_artWorkspace.CompositionSurface != null)
  282. {
  283. this.m_artWorkspace.ZoomBasis = ZoomBasis.ScaleFactor;
  284. this.m_artWorkspace.ScaleFactor = ScaleFactor.OneToOne;
  285. }
  286. }
  287. private void zoomOutButton_Click(object sender, EventArgs e)
  288. {
  289. if (this.m_artWorkspace.CompositionSurface != null)
  290. this.m_artWorkspace.ZoomOut();
  291. }
  292. private void zoomInButton_Click(object sender, EventArgs e)
  293. {
  294. if (this.m_artWorkspace.CompositionSurface != null)
  295. this.m_artWorkspace.ZoomIn();
  296. }
  297. #endregion
  298. private Rectangle m_cropRectangle;
  299. public void getData(GeneralAnalysisModel.ArtworkComparativeModel artworkComparativeModel)
  300. {
  301. this.chkGrids.Checked = artworkComparativeModel.parameter2;
  302. this.chkLine.Checked = artworkComparativeModel.parameter3;
  303. this.trbArt.Value = artworkComparativeModel.parameter4;
  304. this.txtArtTrbValue.Text = artworkComparativeModel.parameter4.ToString();
  305. this.trbTarget.Value = artworkComparativeModel.parameter6;
  306. this.txtTargetTrbValue.Text = artworkComparativeModel.parameter6.ToString();
  307. }
  308. public GeneralAnalysisModel.ArtworkComparativeModel saveData()
  309. {
  310. var artworkComparativeModel = new GeneralAnalysisModel.ArtworkComparativeModel();
  311. artworkComparativeModel.parameter2 = this.chkGrids.Checked;
  312. artworkComparativeModel.parameter3 = this.chkLine.Checked;
  313. artworkComparativeModel.parameter4 = this.trbArt.Value;
  314. artworkComparativeModel.parameter6 = this.trbTarget.Value;
  315. return artworkComparativeModel;
  316. }
  317. private void ArtGraphicsList_SelectChanged(object sender, EventArgs e)
  318. {
  319. GraphicsList graphicsList = (GraphicsList)sender;
  320. if (graphicsList.Count < 2)
  321. {
  322. return;
  323. }
  324. for (int i = 0; i < graphicsList.Count; i++)
  325. {
  326. RectangleF rectangle = graphicsList[i].GetBoundingBox();
  327. if (((DrawObject)graphicsList[i]).ID == 1)
  328. {
  329. Artwork.point2X = (int)rectangle.X + Artwork.side / 2;
  330. Artwork.point2Y = (int)rectangle.Y + Artwork.side / 2;
  331. }
  332. else
  333. {
  334. Artwork.point1X = (int)rectangle.X + Artwork.side / 2;
  335. Artwork.point1Y = (int)rectangle.Y + Artwork.side / 2;
  336. }
  337. if (graphicsList[i].Selected)
  338. {
  339. m_selectedIndex = ((DrawObject)graphicsList[i]).ID;
  340. m_cropRectangle = Rectangle.Ceiling(rectangle);
  341. m_selectedBitmap = ImageTools.Crop(this.ArtBitmap, m_cropRectangle);
  342. picSelected.Image = m_selectedBitmap;
  343. if(this.m_targetWorkspace.GraphicsList.GetDrawClassList(DrawClass.Label).Count > m_selectedIndex)
  344. {
  345. rectangle = this.m_targetWorkspace.GraphicsList[i].GetBoundingBox();
  346. this.m_targetWorkspace.SetSelectedBitmap(m_selectedBitmap, rectangle);
  347. }
  348. }
  349. }
  350. }
  351. private void TargetGraphicsList_SelectChanged(object sender, EventArgs e)
  352. {
  353. GraphicsList graphicsList = (GraphicsList)sender;
  354. if (graphicsList.Count < 2)
  355. {
  356. return;
  357. }
  358. for (int i = 0; i < graphicsList.Count; i++)
  359. {
  360. RectangleF rectangle = graphicsList[i].GetBoundingBox();
  361. if (((DrawObject)graphicsList[i]).ID == 1)
  362. {
  363. m_targetPoint2X = (int)rectangle.X + Artwork.side / 2;
  364. m_targetPoint2Y = (int)rectangle.Y + Artwork.side / 2;
  365. }
  366. else
  367. {
  368. m_targetPoint1X = (int)rectangle.X + Artwork.side / 2;
  369. m_targetPoint1Y = (int)rectangle.Y + Artwork.side / 2;
  370. }
  371. if (graphicsList[i].Selected)
  372. {
  373. if (m_selectedIndex == ((DrawObject)graphicsList[i]).ID)
  374. {
  375. this.m_targetWorkspace.SetSelectedBitmap(m_selectedBitmap, rectangle);
  376. }
  377. }
  378. }
  379. }
  380. public override void Init()
  381. {
  382. if (this.ArtBitmap != null)
  383. {
  384. this.chkGrids.Checked = this.GridLineEnabled;
  385. this.chkLine.Checked = this.AuxiliaryLineEnabled;
  386. this.trbArt.Value = this.Transparency;
  387. Document document = Document.FromImage(this.ArtBitmap);
  388. this.m_artWorkspace.Document = document;
  389. //Artwork = Startup.instance.artworkModel.items[m_selectIndex];
  390. if (Artwork != null)
  391. {
  392. if (this.m_artWorkspace.GraphicsList.Count != 2 || ArtChanged)
  393. {
  394. this.ArtChanged = false;
  395. this.m_artWorkspace.GraphicsList.Clear();
  396. // 加载两点的方形
  397. Pen pen1 = new Pen(ColorTranslator.FromHtml(Artwork.point1Color), Artwork.lineWidth);
  398. Rectangle rectangle1 = new Rectangle(Artwork.point1X - Artwork.side / 2, Artwork.point1Y - Artwork.side / 2, Artwork.side, Artwork.side);
  399. this.m_artWorkspace.ActiveTool = DrawToolType.DrawArtworkRectangle;
  400. this.m_artWorkspace.CreateArtworkRectangle(0, pen1, rectangle1);
  401. Pen pen2 = new Pen(ColorTranslator.FromHtml(Artwork.point2Color), Artwork.lineWidth);
  402. Rectangle rectangle2 = new Rectangle(Artwork.point2X - Artwork.side / 2, Artwork.point2Y - Artwork.side / 2, Artwork.side, Artwork.side);
  403. this.m_artWorkspace.ActiveTool = DrawToolType.DrawArtworkRectangle;
  404. this.m_artWorkspace.CreateArtworkRectangle(1, pen2, rectangle2);
  405. }
  406. }
  407. }
  408. if (this.TargetBitmap != null)
  409. {
  410. this.trbTarget.Value = this.TargetTransparency;
  411. Document document = Document.FromImage(this.TargetBitmap);
  412. this.m_targetWorkspace.Document = document;
  413. if (Artwork != null) //
  414. {
  415. if (this.m_targetWorkspace.GraphicsList.Count != 2 || ArtChanged)
  416. {
  417. this.m_targetWorkspace.GraphicsList.Clear();
  418. // 加载两点的方形
  419. Pen pen1 = new Pen(ColorTranslator.FromHtml(Artwork.point1Color), Artwork.lineWidth);
  420. Rectangle rectangle1 = new Rectangle(Artwork.point1X - Artwork.side / 2, Artwork.point1Y - Artwork.side / 2, Artwork.side, Artwork.side);
  421. this.m_targetWorkspace.ActiveTool = DrawToolType.DrawArtworkRectangle;
  422. this.m_targetWorkspace.CreateArtworkRectangle(0, pen1, rectangle1);
  423. Pen pen2 = new Pen(ColorTranslator.FromHtml(Artwork.point2Color), Artwork.lineWidth);
  424. Rectangle rectangle2 = new Rectangle(Artwork.point2X - Artwork.side / 2, Artwork.point2Y - Artwork.side / 2, Artwork.side, Artwork.side);
  425. this.m_targetWorkspace.ActiveTool = DrawToolType.DrawArtworkRectangle;
  426. this.m_targetWorkspace.CreateArtworkRectangle(1, pen2, rectangle2);
  427. }
  428. }
  429. }
  430. }
  431. private void ArtworkPointUserControl_Resize(object sender, EventArgs e)
  432. {
  433. int width = groupBox4.Location.X - groupBox3.Location.X - 6 - 6;
  434. groupBox3.Width = width / 2;
  435. groupBox3.Height = this.Height - 10;
  436. pnlArt.Width = groupBox3.Width - 12;
  437. pnlArt.Height = groupBox3.Height - 100;
  438. pnlArtTools.Width = groupBox3.Width - 12;
  439. pnlArtTools.Top = groupBox3.Height - 57;
  440. pnlArtTools.Left = pnlArt.Left;
  441. groupBox1.Location = new Point(groupBox3.Location.X + width / 2 + 6, groupBox3.Location.Y);
  442. groupBox1.Width = width / 2;
  443. groupBox1.Height = this.Height - 10;
  444. pnlTarget.Width = groupBox1.Width - 12;
  445. pnlTarget.Height = groupBox1.Height - 100;
  446. pnlTargetTools.Width = groupBox1.Width - 12;
  447. pnlTargetTools.Top = groupBox1.Height - 57;
  448. pnlTargetTools.Left = pnlTarget.Left;
  449. }
  450. private void chkGrids_CheckedChanged(object sender, EventArgs e)
  451. {
  452. if (this.m_artWorkspace != null)
  453. {
  454. this.m_artWorkspace.GridLineFullEnabled = !this.m_artWorkspace.GridLineFullEnabled;
  455. this.m_artWorkspace.Refresh();
  456. }
  457. if (this.m_targetWorkspace != null)
  458. {
  459. this.m_targetWorkspace.GridLineFullEnabled = !this.m_targetWorkspace.GridLineFullEnabled;
  460. this.m_targetWorkspace.Refresh();
  461. }
  462. this.GridLineEnabled = chkGrids.Checked;
  463. }
  464. private void chkLine_CheckedChanged(object sender, EventArgs e)
  465. {
  466. if (this.m_artWorkspace != null)
  467. {
  468. this.m_artWorkspace.AuxiliaryLineEnabled = !this.m_artWorkspace.AuxiliaryLineEnabled;
  469. this.m_artWorkspace.Refresh();
  470. }
  471. if (this.m_targetWorkspace != null)
  472. {
  473. this.m_targetWorkspace.AuxiliaryLineEnabled = !this.m_targetWorkspace.AuxiliaryLineEnabled;
  474. this.m_targetWorkspace.Refresh();
  475. }
  476. this.AuxiliaryLineEnabled = chkLine.Checked;
  477. }
  478. private void trbArt_ValueChanged(object sender, EventArgs e)
  479. {
  480. this.Transparency = trbArt.Value;
  481. if (this.ArtBitmap != null)
  482. {
  483. this.ArtBitmap = MakeTransparent(this.ArtBitmap, trbArt.Value);
  484. try
  485. {
  486. m_selectedBitmap = ImageTools.Crop(this.ArtBitmap, m_cropRectangle);
  487. }
  488. catch (Exception)
  489. {
  490. return;
  491. }
  492. picSelected.Image = m_selectedBitmap;
  493. if (this.m_targetWorkspace.GraphicsList.GetDrawClassList(DrawClass.Label).Count > m_selectedIndex)
  494. {
  495. RectangleF rectangle = this.m_targetWorkspace.GraphicsList[m_selectedIndex].GetBoundingBox();
  496. this.m_targetWorkspace.SetSelectedBitmap(m_selectedBitmap, rectangle);
  497. }
  498. }
  499. txtArtTrbValue.Text = trbArt.Value.ToString();
  500. }
  501. private void txtArtTrbValue_KeyPress(object sender, KeyPressEventArgs e)
  502. {
  503. if (e.KeyChar == (char)Keys.Enter)
  504. {
  505. if (string.IsNullOrEmpty(txtArtTrbValue.Text.Trim()))
  506. {
  507. e.Handled = true;
  508. this.txtArtTrbValue.Text = "0";
  509. return;
  510. }
  511. int val = Convert.ToInt32(this.txtArtTrbValue.Text);
  512. if (val < 0)
  513. {
  514. val = 0;
  515. this.txtArtTrbValue.Text = "0";
  516. }
  517. else if (val > 255)
  518. {
  519. val = 255;
  520. this.txtArtTrbValue.Text = "255";
  521. }
  522. trbArt.Value = val;
  523. }
  524. if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar))
  525. {
  526. e.Handled = true;
  527. }
  528. }
  529. private void trbTarget_ValueChanged(object sender, EventArgs e)
  530. {
  531. this.TargetTransparency = trbTarget.Value;
  532. if (this.TargetBitmap != null)
  533. {
  534. this.TargetBitmap = MakeTransparent(this.TargetBitmap, trbTarget.Value);
  535. }
  536. txtTargetTrbValue.Text = trbTarget.Value.ToString();
  537. }
  538. private void txtTargetTrbValue_KeyPress(object sender, KeyPressEventArgs e)
  539. {
  540. if (e.KeyChar == (char)Keys.Enter)
  541. {
  542. if (string.IsNullOrEmpty(txtTargetTrbValue.Text.Trim()))
  543. {
  544. e.Handled = true;
  545. this.txtTargetTrbValue.Text = "0";
  546. return;
  547. }
  548. int val = Convert.ToInt32(this.txtTargetTrbValue.Text);
  549. if (val < 0)
  550. {
  551. val = 0;
  552. this.txtTargetTrbValue.Text = "0";
  553. }
  554. else if (val > 255)
  555. {
  556. val = 255;
  557. this.txtTargetTrbValue.Text = "255";
  558. }
  559. trbTarget.Value = val;
  560. }
  561. if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar))
  562. {
  563. e.Handled = true;
  564. }
  565. }
  566. private double TargetRotate()
  567. {
  568. double angleOfArt = Math.Atan2((Artwork.point2Y - Artwork.point1Y), (Artwork.point2X - Artwork.point1X)) * 180 / Math.PI;
  569. double angleOfTarget = Math.Atan2((m_targetPoint2Y - m_targetPoint1Y), (m_targetPoint2X - m_targetPoint1X)) * 180 / Math.PI;
  570. return angleOfTarget - angleOfArt;
  571. }
  572. /// <summary>
  573. /// 工艺图比照,定位插入,保存图片
  574. /// </summary>
  575. public void Save()
  576. {
  577. float angle = (float)TargetRotate();
  578. double distanceArt = ImageTools.CalcDistance(new Point(Artwork.point1X, Artwork.point1Y), new Point(Artwork.point2X, Artwork.point2Y));
  579. double distanceTarget = ImageTools.CalcDistance(new Point(m_targetPoint1X, m_targetPoint1Y), new Point(m_targetPoint2X, m_targetPoint2Y));
  580. //旋转图片
  581. OpenCvSharp.Mat targetMat = PaintDotNet.Camera.Tools.ToMat(this.TargetBitmap);
  582. BaseTools.ImageRotate(targetMat, targetMat, -angle, OpenCvSharp.InterpolationFlags.Linear);
  583. //计算绘制的左上角的坐标点
  584. //计算旋转后的点
  585. Matrix matrix = new Matrix();
  586. matrix.RotateAt((float)-angle, new Point(this.TargetBitmap.Width/2, this.TargetBitmap.Height / 2));
  587. Point[] ff = new Point[2];
  588. ff[0] = new Point(m_targetPoint1X, m_targetPoint1Y);
  589. ff[1] = new Point(m_targetPoint2X, m_targetPoint2Y);
  590. matrix.TransformPoints(ff);
  591. matrix.Dispose();
  592. matrix = null;
  593. //缩放点
  594. int xcha = (targetMat.Width - this.TargetBitmap.Width)/ 2;
  595. int ycha = (targetMat.Height - this.TargetBitmap.Height) / 2;
  596. OpenCvSharp.Point new1 = new OpenCvSharp.Point(ff[0].X + xcha, ff[0].Y + ycha);
  597. OpenCvSharp.Point new2 = new OpenCvSharp.Point(ff[1].X + xcha, ff[1].Y + ycha);
  598. /*OpenCvSharp.Cv2.Circle(targetMat, new1, 2, new OpenCvSharp.Scalar(0, 255, 0));
  599. OpenCvSharp.Cv2.Circle(targetMat, new2, 2, new OpenCvSharp.Scalar(0, 0, 255));
  600. OpenCvSharp.Cv2.ImShow("11", targetMat);*/
  601. //缩放图片
  602. double scale = distanceArt / distanceTarget;
  603. OpenCvSharp.Cv2.Resize(targetMat, targetMat, new OpenCvSharp.Size(targetMat.Width* scale, targetMat.Height*scale));
  604. OpenCvSharp.Point new11 = new OpenCvSharp.Point(new1.X * scale, new1.Y * scale);
  605. OpenCvSharp.Point new22 = new OpenCvSharp.Point(new2.X * scale, new2.Y * scale);
  606. /*OpenCvSharp.Cv2.Circle(targetMat, new11, 2, new OpenCvSharp.Scalar(0, 255, 0));
  607. OpenCvSharp.Cv2.Circle(targetMat, new22, 2, new OpenCvSharp.Scalar(0, 0, 255));
  608. OpenCvSharp.Cv2.ImShow("22", targetMat);*/
  609. //计算绘制位置位置
  610. //获取相对两个点的左上角的点
  611. Point targetleftTopTemp = new Point(new11.X < new22.X ? new11.X : new22.X, new11.Y < new22.Y ? new11.Y : new22.Y);
  612. Point artleftTopTemp = new Point(Artwork.point1X < Artwork.point2X ? Artwork.point1X : Artwork.point2X,
  613. Artwork.point1Y < Artwork.point2Y ? Artwork.point1Y : Artwork.point2Y);
  614. Point drawPoint = new Point(artleftTopTemp.X - targetleftTopTemp.X, artleftTopTemp.Y - targetleftTopTemp.Y);
  615. // 2020091 edit
  616. //Bitmap temp = (Bitmap)this.ArtBitmap.Clone();
  617. Bitmap temp = new Bitmap(this.ArtBitmap.Width, this.ArtBitmap.Height);
  618. Graphics graphics = Graphics.FromImage(temp);
  619. graphics.DrawImage(OpenCvSharp.Extensions.BitmapConverter.ToBitmap(targetMat), drawPoint.X, drawPoint.Y, targetMat.Width, targetMat.Height);
  620. //OpenCvSharp.Cv2.ImShow("22", PaintDotNet.Camera.Tools.ToMat(temp));
  621. this.TargetBitmap = temp;
  622. // end edit
  623. //DocumentWorkspace dw = m_appWorkspace.AddNewDocumentWorkspace();
  624. //Document document = Document.FromImage(temp);
  625. //document.Dirty = true;
  626. //dw.Document = document;
  627. ////激活
  628. //m_appWorkspace.ActiveDocumentWorkspace = dw;
  629. ////锁定扩缩
  630. //if (m_appWorkspace.isLockZoom && m_appWorkspace.lockScaleRatio > 0)
  631. //{
  632. // m_appWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.ScaleFactor;
  633. // m_appWorkspace.ActiveDocumentWorkspace.ScaleFactor = ScaleFactor.FromDouble(m_appWorkspace.lockScaleRatio);
  634. // m_appWorkspace.SetZoonTrackValue(m_appWorkspace.ActiveDocumentWorkspace.ScaleFactor);
  635. //}
  636. //else
  637. //{
  638. // m_appWorkspace.ActiveDocumentWorkspace.ZoomBasis = ZoomBasis.FitToWindow;
  639. //}
  640. //m_appWorkspace.Refresh();
  641. }
  642. }
  643. }