ShowVisionRender.xaml.cs 76 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108
  1. using Cognex.VisionPro;
  2. using Cognex.VisionPro.ImageFile;
  3. using log4net.Core;
  4. using MahApps.Metro.Controls;
  5. using Prism.Events;
  6. using Prism.Ioc;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Drawing;
  10. using System.IO;
  11. using System.Threading.Tasks;
  12. using System.Windows;
  13. using System.Windows.Controls;
  14. using System.Windows.Forms.Integration;
  15. using System.Windows.Interop;
  16. using TeamAAS_VP;
  17. using TeamAAS_VP.Core;
  18. using TeamAAS_VP.Data;
  19. using TeamAAS_VP.Enums;
  20. using TeamAAS_VP.Events;
  21. using TeamAAS_VP.Interfaces;
  22. using TeamAAS_VP.Models;
  23. using TeamAAS_VP.Resources.Languages;
  24. using TeamAAS_VP.ViewModels;
  25. using TeamAAS_VP.ViewModels.Home;
  26. using static MaterialDesignThemes.Wpf.Theme.ToolBar;
  27. namespace TeamAAS_VP.Views.Home
  28. {
  29. /// <summary>
  30. /// Interaction logic for ShowVisionRender
  31. /// </summary>
  32. public partial class ShowVisionRender : UserControl
  33. {
  34. ShowVisionRenderViewModel viewModel;
  35. Dictionary<Guid, WindowsFormsHost> vmRenders;
  36. Dictionary<Guid, TextBlock> Titles;
  37. IEventAggregator _eventAggregator;
  38. ISystemDatabaseService _systemDatabaseService;
  39. IProductService _productService;
  40. public ShowVisionRender()
  41. {
  42. InitializeComponent();
  43. vmRenders = new Dictionary<Guid, WindowsFormsHost>();
  44. Titles = new Dictionary<Guid, TextBlock>();
  45. viewModel = DataContext as ShowVisionRenderViewModel;
  46. _eventAggregator = viewModel._eventAggregator;
  47. _systemDatabaseService= ((Prism.PrismApplicationBase)App.Current).Container.Resolve<ISystemDatabaseService>();
  48. _productService = ((Prism.PrismApplicationBase)App.Current).Container.Resolve<IProductService>();
  49. viewModel.UpdateLayout += ViewModel_UpdateLayout;
  50. _eventAggregator.GetEvent<RenderUpdateNotification>().Subscribe(UpdateRenderModuleSource);
  51. _eventAggregator.GetEvent<ProductChangedNotification>().Subscribe(ProductChanged);
  52. }
  53. private void UpdateRenderModuleSource(ShowRender render)
  54. {
  55. //foreach (var item in vmRenders)
  56. //{
  57. // if (item.Key== render.Id)
  58. // {
  59. // App.Current.Dispatcher.Invoke(new Action(() =>
  60. // {
  61. // item.Value.ModuleSource = render.ModuleSource;
  62. // }));
  63. // break;
  64. // }
  65. //}
  66. this.gridRender.Dispatcher.BeginInvoke(new Action(() =>
  67. {
  68. foreach (var item in vmRenders)
  69. {
  70. if (((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Tag!=null && ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Tag.ToString() == render.CameraName)
  71. {
  72. ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Record = null;
  73. ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Image = render.Image;
  74. ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).StaticGraphics.Clear();
  75. if (render.Graphic!=null)
  76. ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).StaticGraphics.AddList(render.Graphic, "");
  77. if (render.Record != null)
  78. ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Record = render.Record;
  79. if (render.IsSaveImage)
  80. {
  81. SaveImage(render.SaveImageModel, render.SaveImagePathModel, render.SavePath, render.Image, (Bitmap)((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).CreateContentBitmap(Cognex.VisionPro.Display.CogDisplayContentBitmapConstants.Custom), render.Result, render.IsCompress);
  82. }
  83. break;
  84. }
  85. }
  86. /*
  87. foreach (var item in gridRender.Children)
  88. {
  89. if (item is WindowsFormsHost && ((WindowsFormsHost)item).Child is Cognex.VisionPro.CogRecordDisplay)
  90. {
  91. if (((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).Tag != null && ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).Tag.ToString() == render.CameraName)
  92. {
  93. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).Image = render.Image;
  94. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).StaticGraphics.Clear();
  95. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).StaticGraphics.AddList(render.Graphic, "");
  96. if (render.Record != null)
  97. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).Record = render.Record;
  98. if (render.IsSaveImage)
  99. {
  100. SaveImage(render.SaveImageModel, render.SaveImagePathModel, render.SavePath, render.Image, (Bitmap)((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).CreateContentBitmap(Cognex.VisionPro.Display.CogDisplayContentBitmapConstants.Custom), render.Result, render.IsCompress);
  101. }
  102. break;
  103. }
  104. }
  105. else if (item is Grid)
  106. {
  107. foreach (var item1 in ((Grid)item).Children)
  108. {
  109. if (item1 is WindowsFormsHost && ((WindowsFormsHost)item1).Child is Cognex.VisionPro.CogRecordDisplay)
  110. {
  111. if (((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item1).Child).Tag != null && ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item1).Child).Tag.ToString() == render.CameraName)
  112. {
  113. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item1).Child).Image = render.Image;
  114. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item1).Child).StaticGraphics.Clear();
  115. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item1).Child).StaticGraphics.AddList(render.Graphic, "");
  116. if (render.Record != null)
  117. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).Record = render.Record;
  118. if (render.IsSaveImage)
  119. {
  120. SaveImage(render.SaveImageModel, render.SaveImagePathModel, render.SavePath, render.Image, (Bitmap)((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).CreateContentBitmap(Cognex.VisionPro.Display.CogDisplayContentBitmapConstants.Custom), render.Result, render.IsCompress);
  121. }
  122. break;
  123. }
  124. }
  125. }
  126. break;
  127. }
  128. }*/
  129. }));
  130. }
  131. Grid grid1 = new Grid();
  132. Grid grid2 = new Grid();
  133. Grid grid3 = new Grid();
  134. Grid grid4 = new Grid();
  135. Grid grid5 = new Grid();
  136. Grid grid6 = new Grid();
  137. Grid grid7 = new Grid();
  138. Grid grid8 = new Grid();
  139. private void ViewModel_UpdateLayout(System.Collections.ObjectModel.ObservableCollection<Models.ShowRender> obj)
  140. {
  141. System.Windows.Media.FontFamily font = Application.Current.Resources["DefaultFont"] as System.Windows.Media.FontFamily;
  142. if (vmRenders.Count > 0)
  143. {
  144. foreach (var render in vmRenders)
  145. {
  146. render.Value.Dispose();
  147. }
  148. }
  149. vmRenders.Clear();
  150. gridRender.Children.Clear();
  151. Titles.Clear();
  152. if (obj == null) { return; }
  153. if (obj.Count == 0) { return; }
  154. Grid grid = new Grid();
  155. gridRender.RowDefinitions.Clear();
  156. gridRender.ColumnDefinitions.Clear();
  157. System.Windows.Thickness margin = new System.Windows.Thickness(2);
  158. switch (obj.Count)
  159. {
  160. case 1:
  161. vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } });
  162. Titles.Add(obj[0].Id, new TextBlock() { Text = obj[0].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12 , Foreground = System.Windows.Media.Brushes.Black });
  163. gridRender.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  164. gridRender.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  165. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  166. gridRender.ShowGridLines = false;
  167. gridRender.Children.Add(vmRenders[obj[0].Id]);
  168. gridRender.Children.Add(Titles[obj[0].Id]);
  169. Grid.SetRow(vmRenders[obj[0].Id], 1);
  170. Grid.SetColumn(vmRenders[obj[0].Id], 0);
  171. Grid.SetRowSpan(vmRenders[obj[0].Id], 1);
  172. Grid.SetColumnSpan(vmRenders[obj[0].Id], 1);
  173. Grid.SetRow(Titles[obj[0].Id], 0);
  174. Grid.SetColumn(Titles[obj[0].Id], 0);
  175. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[0].Id]).Child).HorizontalScrollBar = false;
  176. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[0].Id]).Child).VerticalScrollBar = false;
  177. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[0].Id]).Child).AutoFit = true;
  178. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[0].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption;
  179. break;
  180. case 2:
  181. //增加显示界面
  182. vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } });
  183. vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } });
  184. Titles.Add(obj[0].Id, new TextBlock() { Text = obj[0].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12,Foreground = System.Windows.Media.Brushes.Black });
  185. Titles.Add(obj[1].Id, new TextBlock() { Text = obj[1].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  186. //布局
  187. gridRender.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  188. gridRender.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  189. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  190. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  191. gridRender.ShowGridLines = true;
  192. gridRender.Children.Add(vmRenders[obj[0].Id]);
  193. gridRender.Children.Add(vmRenders[obj[1].Id]);
  194. gridRender.Children.Add(Titles[obj[0].Id]);
  195. gridRender.Children.Add(Titles[obj[1].Id]);
  196. Grid.SetRow(vmRenders[obj[0].Id], 1);
  197. Grid.SetColumn(vmRenders[obj[0].Id], 0);
  198. Grid.SetRow(vmRenders[obj[1].Id], 1);
  199. Grid.SetColumn(vmRenders[obj[1].Id], 1);
  200. Grid.SetRowSpan(vmRenders[obj[0].Id], 1);
  201. Grid.SetColumnSpan(vmRenders[obj[0].Id], 1);
  202. Grid.SetRow(Titles[obj[0].Id], 0);
  203. Grid.SetColumn(Titles[obj[0].Id], 0);
  204. Grid.SetRow(Titles[obj[1].Id], 0);
  205. Grid.SetColumn(Titles[obj[1].Id], 1);
  206. for (int i = 0; i < 2; i++)
  207. {
  208. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false;
  209. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false;
  210. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true;
  211. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption;
  212. }
  213. break;
  214. case 3:
  215. //增加显示界面
  216. vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } });
  217. vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } });
  218. vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } });
  219. Titles.Add(obj[0].Id, new TextBlock() { Text = obj[0].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  220. Titles.Add(obj[1].Id, new TextBlock() { Text = obj[1].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12,Foreground = System.Windows.Media.Brushes.Black });
  221. Titles.Add(obj[2].Id, new TextBlock() { Text = obj[2].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  222. //布局
  223. gridRender.RowDefinitions.Add(new RowDefinition());
  224. gridRender.RowDefinitions.Add(new RowDefinition());
  225. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  226. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  227. gridRender.ShowGridLines = true;
  228. grid1 = new Grid();
  229. grid2 = new Grid();
  230. grid3 = new Grid();
  231. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  232. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  233. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  234. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  235. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  236. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  237. gridRender.Children.Add(grid1);
  238. gridRender.Children.Add(grid2);
  239. gridRender.Children.Add(grid3);
  240. Grid.SetRow(grid1, 0);
  241. Grid.SetColumn(grid1, 0);
  242. Grid.SetRow(grid2, 0);
  243. Grid.SetColumn(grid2, 1);
  244. Grid.SetRow(grid3, 1);
  245. Grid.SetColumn(grid3, 0);
  246. Grid.SetColumnSpan(grid3, 2);
  247. grid1.Children.Add(vmRenders[obj[0].Id]);
  248. grid2.Children.Add(vmRenders[obj[1].Id]);
  249. grid3.Children.Add(vmRenders[obj[2].Id]);
  250. grid1.Children.Add(Titles[obj[0].Id]);
  251. grid2.Children.Add(Titles[obj[1].Id]);
  252. grid3.Children.Add(Titles[obj[2].Id]);
  253. Grid.SetRow(vmRenders[obj[0].Id], 1);
  254. Grid.SetColumn(vmRenders[obj[0].Id], 0);
  255. Grid.SetRow(vmRenders[obj[1].Id], 1);
  256. Grid.SetColumn(vmRenders[obj[1].Id], 0);
  257. Grid.SetRow(vmRenders[obj[2].Id], 1);
  258. Grid.SetColumn(vmRenders[obj[2].Id], 0);
  259. Grid.SetRow(Titles[obj[0].Id], 0);
  260. Grid.SetColumn(Titles[obj[0].Id], 0);
  261. Grid.SetRow(Titles[obj[1].Id], 0);
  262. Grid.SetColumn(Titles[obj[1].Id], 0);
  263. Grid.SetRow(Titles[obj[2].Id], 0);
  264. Grid.SetColumn(Titles[obj[2].Id], 0);
  265. for (int i = 0; i < 3; i++)
  266. {
  267. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false;
  268. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false;
  269. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true;
  270. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption;
  271. }
  272. break;
  273. case 4:
  274. //增加显示界面
  275. vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } });
  276. vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } });
  277. vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } });
  278. vmRenders.Add(obj[3].Id, new WindowsFormsHost() { Tag = obj[3].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[3].CameraName } });
  279. Titles.Add(obj[0].Id, new TextBlock() { Text = obj[0].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  280. Titles.Add(obj[1].Id, new TextBlock() { Text = obj[1].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  281. Titles.Add(obj[2].Id, new TextBlock() { Text = obj[2].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  282. Titles.Add(obj[3].Id, new TextBlock() { Text = obj[3].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  283. //布局
  284. gridRender.RowDefinitions.Add(new RowDefinition());
  285. gridRender.RowDefinitions.Add(new RowDefinition());
  286. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  287. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  288. gridRender.ShowGridLines = true;
  289. grid1 = new Grid();
  290. grid2 = new Grid();
  291. grid3 = new Grid();
  292. grid4 = new Grid();
  293. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  294. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  295. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  296. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  297. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  298. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  299. grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  300. grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  301. gridRender.Children.Add(grid1);
  302. gridRender.Children.Add(grid2);
  303. gridRender.Children.Add(grid3);
  304. gridRender.Children.Add(grid4);
  305. Grid.SetRow(grid1, 0);
  306. Grid.SetColumn(grid1, 0);
  307. Grid.SetRow(grid2, 0);
  308. Grid.SetColumn(grid2, 1);
  309. Grid.SetRow(grid3, 1);
  310. Grid.SetColumn(grid3, 0);
  311. Grid.SetRow(grid4, 1);
  312. Grid.SetColumn(grid4, 1);
  313. grid1.Children.Add(vmRenders[obj[0].Id]);
  314. grid2.Children.Add(vmRenders[obj[1].Id]);
  315. grid3.Children.Add(vmRenders[obj[2].Id]);
  316. grid4.Children.Add(vmRenders[obj[3].Id]);
  317. grid1.Children.Add(Titles[obj[0].Id]);
  318. grid2.Children.Add(Titles[obj[1].Id]);
  319. grid3.Children.Add(Titles[obj[2].Id]);
  320. grid4.Children.Add(Titles[obj[3].Id]);
  321. Grid.SetRow(vmRenders[obj[0].Id], 1);
  322. Grid.SetColumn(vmRenders[obj[0].Id], 0);
  323. Grid.SetRow(vmRenders[obj[1].Id], 1);
  324. Grid.SetColumn(vmRenders[obj[1].Id], 0);
  325. Grid.SetRow(vmRenders[obj[2].Id], 1);
  326. Grid.SetColumn(vmRenders[obj[2].Id], 0);
  327. Grid.SetRow(vmRenders[obj[3].Id], 1);
  328. Grid.SetColumn(vmRenders[obj[3].Id], 0);
  329. //Grid.SetRowSpan(vmRenders[obj[2].Id], 1);
  330. //Grid.SetColumnSpan(vmRenders[obj[2].Id], 0);
  331. Grid.SetRow(Titles[obj[0].Id], 0);
  332. Grid.SetColumn(Titles[obj[0].Id], 0);
  333. Grid.SetRow(Titles[obj[1].Id], 0);
  334. Grid.SetColumn(Titles[obj[1].Id], 0);
  335. Grid.SetRow(Titles[obj[2].Id], 0);
  336. Grid.SetColumn(Titles[obj[2].Id], 0);
  337. Grid.SetRow(Titles[obj[3].Id], 0);
  338. Grid.SetColumn(Titles[obj[3].Id], 0);
  339. for (int i = 0; i < 4; i++)
  340. {
  341. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false;
  342. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false;
  343. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true;
  344. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption;
  345. }
  346. break;
  347. case 5:
  348. //增加显示界面
  349. vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } });
  350. vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } });
  351. vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } });
  352. vmRenders.Add(obj[3].Id, new WindowsFormsHost() { Tag = obj[3].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[3].CameraName } });
  353. vmRenders.Add(obj[4].Id, new WindowsFormsHost() { Tag = obj[4].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[4].CameraName } });
  354. Titles.Add(obj[0].Id, new TextBlock() { Text = obj[0].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12 ,Foreground= System.Windows.Media.Brushes.Black});
  355. Titles.Add(obj[1].Id, new TextBlock() { Text = obj[1].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  356. Titles.Add(obj[2].Id, new TextBlock() { Text = obj[2].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  357. Titles.Add(obj[3].Id, new TextBlock() { Text = obj[3].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  358. Titles.Add(obj[4].Id, new TextBlock() { Text = obj[4].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  359. //布局
  360. gridRender.RowDefinitions.Add(new RowDefinition());
  361. gridRender.RowDefinitions.Add(new RowDefinition());
  362. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  363. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  364. gridRender.ShowGridLines = true;
  365. grid1 = new Grid() { Background= System.Windows.Media.Brushes.White };
  366. grid2 = new Grid() { Background = System.Windows.Media.Brushes.White };
  367. grid3 = new Grid() { Background = System.Windows.Media.Brushes.White };
  368. grid4 = new Grid() { Background = System.Windows.Media.Brushes.White };
  369. grid5 = new Grid() { Background = System.Windows.Media.Brushes.White };
  370. grid6 = new Grid() { Background = System.Windows.Media.Brushes.White };
  371. grid6.ShowGridLines = true;
  372. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  373. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  374. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  375. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  376. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  377. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  378. grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  379. grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  380. grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  381. grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  382. grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  383. grid6.ColumnDefinitions.Add(new ColumnDefinition());
  384. grid6.ColumnDefinitions.Add(new ColumnDefinition());
  385. grid6.ColumnDefinitions.Add(new ColumnDefinition());
  386. gridRender.Children.Add(grid1);
  387. gridRender.Children.Add(grid2);
  388. gridRender.Children.Add(grid6);
  389. grid6.Children.Add(grid3);
  390. grid6.Children.Add(grid4);
  391. grid6.Children.Add(grid5);
  392. grid1.Children.Add(vmRenders[obj[0].Id]);
  393. grid2.Children.Add(vmRenders[obj[1].Id]);
  394. grid3.Children.Add(vmRenders[obj[2].Id]);
  395. grid4.Children.Add(vmRenders[obj[3].Id]);
  396. grid5.Children.Add(vmRenders[obj[4].Id]);
  397. grid1.Children.Add(Titles[obj[0].Id]);
  398. grid2.Children.Add(Titles[obj[1].Id]);
  399. grid3.Children.Add(Titles[obj[2].Id]);
  400. grid4.Children.Add(Titles[obj[3].Id]);
  401. grid5.Children.Add(Titles[obj[4].Id]);
  402. Grid.SetRow(grid6, 1);
  403. Grid.SetColumn(grid6, 0);
  404. Grid.SetColumnSpan(grid6, 2);
  405. Grid.SetRow(grid1, 0);
  406. Grid.SetColumn(grid1, 0);
  407. Grid.SetRow(grid2, 0);
  408. Grid.SetColumn(grid2, 1);
  409. Grid.SetRow(grid3, 0);
  410. Grid.SetColumn(grid3, 0);
  411. Grid.SetRow(grid4, 0);
  412. Grid.SetColumn(grid4, 1);
  413. Grid.SetRow(grid5, 0);
  414. Grid.SetColumn(grid5, 2);
  415. Grid.SetRow(Titles[obj[0].Id], 0);
  416. Grid.SetColumn(Titles[obj[0].Id], 0);
  417. Grid.SetRow(Titles[obj[1].Id], 0);
  418. Grid.SetColumn(Titles[obj[1].Id], 0);
  419. Grid.SetRow(Titles[obj[2].Id], 0);
  420. Grid.SetColumn(Titles[obj[2].Id], 0);
  421. Grid.SetRow(Titles[obj[3].Id], 0);
  422. Grid.SetColumn(Titles[obj[3].Id], 0);
  423. Grid.SetRow(Titles[obj[4].Id], 0);
  424. Grid.SetColumn(Titles[obj[4].Id], 0);
  425. Grid.SetRow(vmRenders[obj[0].Id], 1);
  426. Grid.SetColumn(vmRenders[obj[0].Id], 0);
  427. Grid.SetRow(vmRenders[obj[1].Id], 1);
  428. Grid.SetColumn(vmRenders[obj[1].Id], 0);
  429. Grid.SetRow(vmRenders[obj[2].Id], 1);
  430. Grid.SetColumn(vmRenders[obj[2].Id], 0);
  431. Grid.SetRow(vmRenders[obj[3].Id], 1);
  432. Grid.SetColumn(vmRenders[obj[3].Id], 0);
  433. Grid.SetRow(vmRenders[obj[4].Id], 1);
  434. Grid.SetColumn(vmRenders[obj[4].Id], 0);
  435. for (int i = 0; i < 5; i++)
  436. {
  437. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false;
  438. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false;
  439. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true;
  440. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption;
  441. }
  442. break;
  443. case 6:
  444. //增加显示界面
  445. vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } });
  446. vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } });
  447. vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } });
  448. vmRenders.Add(obj[3].Id, new WindowsFormsHost() { Tag = obj[3].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[3].CameraName } });
  449. vmRenders.Add(obj[4].Id, new WindowsFormsHost() { Tag = obj[4].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[4].CameraName } });
  450. vmRenders.Add(obj[5].Id, new WindowsFormsHost() { Tag = obj[5].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[5].CameraName } });
  451. Titles.Add(obj[0].Id, new TextBlock() { Text = obj[0].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  452. Titles.Add(obj[1].Id, new TextBlock() { Text = obj[1].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  453. Titles.Add(obj[2].Id, new TextBlock() { Text = obj[2].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  454. Titles.Add(obj[3].Id, new TextBlock() { Text = obj[3].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  455. Titles.Add(obj[4].Id, new TextBlock() { Text = obj[4].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  456. Titles.Add(obj[5].Id, new TextBlock() { Text = obj[5].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  457. //布局
  458. gridRender.RowDefinitions.Add(new RowDefinition());
  459. gridRender.RowDefinitions.Add(new RowDefinition());
  460. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  461. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  462. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  463. gridRender.ShowGridLines = true;
  464. grid1 = new Grid();
  465. grid2 = new Grid();
  466. grid3 = new Grid();
  467. grid4 = new Grid();
  468. grid5 = new Grid();
  469. grid6 = new Grid();
  470. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  471. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  472. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  473. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  474. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  475. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  476. grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  477. grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  478. grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  479. grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  480. grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  481. grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  482. gridRender.Children.Add(grid1);
  483. gridRender.Children.Add(grid2);
  484. gridRender.Children.Add(grid3);
  485. gridRender.Children.Add(grid4);
  486. gridRender.Children.Add(grid5);
  487. gridRender.Children.Add(grid6);
  488. Grid.SetRow(grid1, 0);
  489. Grid.SetColumn(grid1, 0);
  490. Grid.SetRow(grid2, 0);
  491. Grid.SetColumn(grid2, 1);
  492. Grid.SetRow(grid3, 0);
  493. Grid.SetColumn(grid3, 2);
  494. Grid.SetRow(grid4, 1);
  495. Grid.SetColumn(grid4, 0);
  496. Grid.SetRow(grid5, 1);
  497. Grid.SetColumn(grid5, 1);
  498. Grid.SetRow(grid6, 1);
  499. Grid.SetColumn(grid6, 2);
  500. grid1.Children.Add(vmRenders[obj[0].Id]);
  501. grid2.Children.Add(vmRenders[obj[1].Id]);
  502. grid3.Children.Add(vmRenders[obj[2].Id]);
  503. grid4.Children.Add(vmRenders[obj[3].Id]);
  504. grid5.Children.Add(vmRenders[obj[4].Id]);
  505. grid6.Children.Add(vmRenders[obj[5].Id]);
  506. grid1.Children.Add(Titles[obj[0].Id]);
  507. grid2.Children.Add(Titles[obj[1].Id]);
  508. grid3.Children.Add(Titles[obj[2].Id]);
  509. grid4.Children.Add(Titles[obj[3].Id]);
  510. grid5.Children.Add(Titles[obj[4].Id]);
  511. grid6.Children.Add(Titles[obj[5].Id]);
  512. Grid.SetRow(Titles[obj[0].Id], 0);
  513. Grid.SetColumn(Titles[obj[0].Id], 0);
  514. Grid.SetRow(Titles[obj[1].Id], 0);
  515. Grid.SetColumn(Titles[obj[1].Id], 0);
  516. Grid.SetRow(Titles[obj[2].Id], 0);
  517. Grid.SetColumn(Titles[obj[2].Id], 0);
  518. Grid.SetRow(Titles[obj[3].Id], 0);
  519. Grid.SetColumn(Titles[obj[3].Id], 0);
  520. Grid.SetRow(Titles[obj[4].Id], 0);
  521. Grid.SetColumn(Titles[obj[4].Id], 0);
  522. Grid.SetRow(Titles[obj[5].Id], 0);
  523. Grid.SetColumn(Titles[obj[5].Id], 0);
  524. Grid.SetRow(vmRenders[obj[0].Id], 1);
  525. Grid.SetColumn(vmRenders[obj[0].Id], 0);
  526. Grid.SetRow(vmRenders[obj[1].Id], 1);
  527. Grid.SetColumn(vmRenders[obj[1].Id], 0);
  528. Grid.SetRow(vmRenders[obj[2].Id], 1);
  529. Grid.SetColumn(vmRenders[obj[2].Id], 0);
  530. Grid.SetRow(vmRenders[obj[3].Id], 1);
  531. Grid.SetColumn(vmRenders[obj[3].Id], 0);
  532. Grid.SetRow(vmRenders[obj[4].Id], 1);
  533. Grid.SetColumn(vmRenders[obj[4].Id], 0);
  534. Grid.SetRow(vmRenders[obj[5].Id], 1);
  535. Grid.SetColumn(vmRenders[obj[5].Id], 0);
  536. for (int i = 0; i < 6; i++)
  537. {
  538. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false;
  539. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false;
  540. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true;
  541. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption;
  542. }
  543. break;
  544. case 7:
  545. //增加显示界面
  546. vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } });
  547. vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } });
  548. vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } });
  549. vmRenders.Add(obj[3].Id, new WindowsFormsHost() { Tag = obj[3].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[3].CameraName } });
  550. vmRenders.Add(obj[4].Id, new WindowsFormsHost() { Tag = obj[4].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[4].CameraName } });
  551. vmRenders.Add(obj[5].Id, new WindowsFormsHost() { Tag = obj[5].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[5].CameraName } });
  552. vmRenders.Add(obj[6].Id, new WindowsFormsHost() { Tag = obj[6].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[6].CameraName } });
  553. Titles.Add(obj[0].Id, new TextBlock() { Text = obj[0].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  554. Titles.Add(obj[1].Id, new TextBlock() { Text = obj[1].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  555. Titles.Add(obj[2].Id, new TextBlock() { Text = obj[2].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  556. Titles.Add(obj[3].Id, new TextBlock() { Text = obj[3].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  557. Titles.Add(obj[4].Id, new TextBlock() { Text = obj[4].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  558. Titles.Add(obj[5].Id, new TextBlock() { Text = obj[5].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  559. Titles.Add(obj[6].Id, new TextBlock() { Text = obj[6].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  560. //布局
  561. gridRender.RowDefinitions.Add(new RowDefinition());
  562. gridRender.RowDefinitions.Add(new RowDefinition());
  563. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  564. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  565. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  566. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  567. gridRender.ShowGridLines = true;
  568. grid1 = new Grid();
  569. grid2 = new Grid();
  570. grid3 = new Grid();
  571. grid4 = new Grid();
  572. grid5 = new Grid();
  573. grid6 = new Grid();
  574. grid7 = new Grid();
  575. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  576. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  577. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  578. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  579. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  580. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  581. grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  582. grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  583. grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  584. grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  585. grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  586. grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  587. grid7.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  588. grid7.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  589. gridRender.Children.Add(grid1);
  590. gridRender.Children.Add(grid2);
  591. gridRender.Children.Add(grid3);
  592. gridRender.Children.Add(grid4);
  593. gridRender.Children.Add(grid5);
  594. gridRender.Children.Add(grid6);
  595. gridRender.Children.Add(grid7);
  596. Grid.SetRow(grid1, 0);
  597. Grid.SetColumn(grid1, 0);
  598. Grid.SetRow(grid2, 0);
  599. Grid.SetColumn(grid2, 1);
  600. Grid.SetRow(grid3, 0);
  601. Grid.SetColumn(grid3, 2);
  602. Grid.SetRow(grid4, 0);
  603. Grid.SetColumn(grid4, 3);
  604. Grid.SetRow(grid5, 1);
  605. Grid.SetColumn(grid5, 0);
  606. Grid.SetRow(grid6, 1);
  607. Grid.SetColumn(grid6, 1);
  608. Grid.SetRow(grid7, 1);
  609. Grid.SetColumn(grid7, 2);
  610. grid1.Children.Add(vmRenders[obj[0].Id]);
  611. grid2.Children.Add(vmRenders[obj[1].Id]);
  612. grid3.Children.Add(vmRenders[obj[2].Id]);
  613. grid4.Children.Add(vmRenders[obj[3].Id]);
  614. grid5.Children.Add(vmRenders[obj[4].Id]);
  615. grid6.Children.Add(vmRenders[obj[5].Id]);
  616. grid7.Children.Add(vmRenders[obj[6].Id]);
  617. grid1.Children.Add(Titles[obj[0].Id]);
  618. grid2.Children.Add(Titles[obj[1].Id]);
  619. grid3.Children.Add(Titles[obj[2].Id]);
  620. grid4.Children.Add(Titles[obj[3].Id]);
  621. grid5.Children.Add(Titles[obj[4].Id]);
  622. grid6.Children.Add(Titles[obj[5].Id]);
  623. grid7.Children.Add(Titles[obj[6].Id]);
  624. Grid.SetRow(Titles[obj[0].Id], 0);
  625. Grid.SetColumn(Titles[obj[0].Id], 0);
  626. Grid.SetRow(Titles[obj[1].Id], 0);
  627. Grid.SetColumn(Titles[obj[1].Id], 0);
  628. Grid.SetRow(Titles[obj[2].Id], 0);
  629. Grid.SetColumn(Titles[obj[2].Id], 0);
  630. Grid.SetRow(Titles[obj[3].Id], 0);
  631. Grid.SetColumn(Titles[obj[3].Id], 0);
  632. Grid.SetRow(Titles[obj[4].Id], 0);
  633. Grid.SetColumn(Titles[obj[4].Id], 0);
  634. Grid.SetRow(Titles[obj[5].Id], 0);
  635. Grid.SetColumn(Titles[obj[5].Id], 0);
  636. Grid.SetRow(Titles[obj[6].Id], 0);
  637. Grid.SetColumn(Titles[obj[6].Id], 0);
  638. Grid.SetRow(vmRenders[obj[0].Id], 1);
  639. Grid.SetColumn(vmRenders[obj[0].Id], 0);
  640. Grid.SetRow(vmRenders[obj[1].Id], 1);
  641. Grid.SetColumn(vmRenders[obj[1].Id], 0);
  642. Grid.SetRow(vmRenders[obj[2].Id], 1);
  643. Grid.SetColumn(vmRenders[obj[2].Id], 0);
  644. Grid.SetRow(vmRenders[obj[3].Id], 1);
  645. Grid.SetColumn(vmRenders[obj[3].Id], 0);
  646. Grid.SetRow(vmRenders[obj[4].Id], 1);
  647. Grid.SetColumn(vmRenders[obj[4].Id], 0);
  648. Grid.SetRow(vmRenders[obj[5].Id], 1);
  649. Grid.SetColumn(vmRenders[obj[5].Id], 0);
  650. Grid.SetRow(vmRenders[obj[6].Id], 1);
  651. Grid.SetColumn(vmRenders[obj[6].Id], 0);
  652. for (int i = 0; i < 7; i++)
  653. {
  654. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false;
  655. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false;
  656. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true;
  657. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption;
  658. }
  659. break;
  660. case 8:
  661. //增加显示界面
  662. vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } });
  663. vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } });
  664. vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } });
  665. vmRenders.Add(obj[3].Id, new WindowsFormsHost() { Tag = obj[3].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[3].CameraName } });
  666. vmRenders.Add(obj[4].Id, new WindowsFormsHost() { Tag = obj[4].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[4].CameraName } });
  667. vmRenders.Add(obj[5].Id, new WindowsFormsHost() { Tag = obj[5].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[5].CameraName } });
  668. vmRenders.Add(obj[6].Id, new WindowsFormsHost() { Tag = obj[6].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[6].CameraName } });
  669. vmRenders.Add(obj[7].Id, new WindowsFormsHost() { Tag = obj[6].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[7].CameraName } });
  670. Titles.Add(obj[0].Id, new TextBlock() { Text = obj[0].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  671. Titles.Add(obj[1].Id, new TextBlock() { Text = obj[1].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  672. Titles.Add(obj[2].Id, new TextBlock() { Text = obj[2].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  673. Titles.Add(obj[3].Id, new TextBlock() { Text = obj[3].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  674. Titles.Add(obj[4].Id, new TextBlock() { Text = obj[4].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  675. Titles.Add(obj[5].Id, new TextBlock() { Text = obj[5].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  676. Titles.Add(obj[6].Id, new TextBlock() { Text = obj[6].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  677. Titles.Add(obj[7].Id, new TextBlock() { Text = obj[7].CameraName, HorizontalAlignment = System.Windows.HorizontalAlignment.Center, FontWeight = FontWeights.Bold, FontFamily = font, FontSize = 12, Foreground = System.Windows.Media.Brushes.Black });
  678. //布局
  679. gridRender.RowDefinitions.Add(new RowDefinition());
  680. gridRender.RowDefinitions.Add(new RowDefinition());
  681. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  682. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  683. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  684. gridRender.ColumnDefinitions.Add(new ColumnDefinition());
  685. gridRender.ShowGridLines = true;
  686. grid1 = new Grid();
  687. grid2 = new Grid();
  688. grid3 = new Grid();
  689. grid4 = new Grid();
  690. grid5 = new Grid();
  691. grid6 = new Grid();
  692. grid7 = new Grid();
  693. grid8 = new Grid();
  694. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  695. grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  696. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  697. grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  698. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  699. grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  700. grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  701. grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  702. grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  703. grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  704. grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  705. grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  706. grid7.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  707. grid7.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  708. grid8.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) });
  709. grid8.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) });
  710. gridRender.Children.Add(grid1);
  711. gridRender.Children.Add(grid2);
  712. gridRender.Children.Add(grid3);
  713. gridRender.Children.Add(grid4);
  714. gridRender.Children.Add(grid5);
  715. gridRender.Children.Add(grid6);
  716. gridRender.Children.Add(grid7);
  717. gridRender.Children.Add(grid8);
  718. Grid.SetRow(grid1, 0);
  719. Grid.SetColumn(grid1, 0);
  720. Grid.SetRow(grid2, 0);
  721. Grid.SetColumn(grid2, 1);
  722. Grid.SetRow(grid3, 0);
  723. Grid.SetColumn(grid3, 2);
  724. Grid.SetRow(grid4, 0);
  725. Grid.SetColumn(grid4, 3);
  726. Grid.SetRow(grid5, 1);
  727. Grid.SetColumn(grid5, 0);
  728. Grid.SetRow(grid6, 1);
  729. Grid.SetColumn(grid6, 1);
  730. Grid.SetRow(grid7, 1);
  731. Grid.SetColumn(grid7, 2);
  732. Grid.SetRow(grid8, 1);
  733. Grid.SetColumn(grid8, 3);
  734. grid1.Children.Add(vmRenders[obj[0].Id]);
  735. grid2.Children.Add(vmRenders[obj[1].Id]);
  736. grid3.Children.Add(vmRenders[obj[2].Id]);
  737. grid4.Children.Add(vmRenders[obj[3].Id]);
  738. grid5.Children.Add(vmRenders[obj[4].Id]);
  739. grid6.Children.Add(vmRenders[obj[5].Id]);
  740. grid7.Children.Add(vmRenders[obj[6].Id]);
  741. grid8.Children.Add(vmRenders[obj[7].Id]);
  742. grid1.Children.Add(Titles[obj[0].Id]);
  743. grid2.Children.Add(Titles[obj[1].Id]);
  744. grid3.Children.Add(Titles[obj[2].Id]);
  745. grid4.Children.Add(Titles[obj[3].Id]);
  746. grid5.Children.Add(Titles[obj[4].Id]);
  747. grid6.Children.Add(Titles[obj[5].Id]);
  748. grid7.Children.Add(Titles[obj[6].Id]);
  749. grid8.Children.Add(Titles[obj[7].Id]);
  750. Grid.SetRow(Titles[obj[0].Id], 0);
  751. Grid.SetColumn(Titles[obj[0].Id], 0);
  752. Grid.SetRow(Titles[obj[1].Id], 0);
  753. Grid.SetColumn(Titles[obj[1].Id], 0);
  754. Grid.SetRow(Titles[obj[2].Id], 0);
  755. Grid.SetColumn(Titles[obj[2].Id], 0);
  756. Grid.SetRow(Titles[obj[3].Id], 0);
  757. Grid.SetColumn(Titles[obj[3].Id], 0);
  758. Grid.SetRow(Titles[obj[4].Id], 0);
  759. Grid.SetColumn(Titles[obj[4].Id], 0);
  760. Grid.SetRow(Titles[obj[5].Id], 0);
  761. Grid.SetColumn(Titles[obj[5].Id], 0);
  762. Grid.SetRow(Titles[obj[6].Id], 0);
  763. Grid.SetColumn(Titles[obj[6].Id], 0);
  764. Grid.SetRow(Titles[obj[7].Id], 0);
  765. Grid.SetColumn(Titles[obj[7].Id], 0);
  766. Grid.SetRow(vmRenders[obj[0].Id], 1);
  767. Grid.SetColumn(vmRenders[obj[0].Id], 0);
  768. Grid.SetRow(vmRenders[obj[1].Id], 1);
  769. Grid.SetColumn(vmRenders[obj[1].Id], 0);
  770. Grid.SetRow(vmRenders[obj[2].Id], 1);
  771. Grid.SetColumn(vmRenders[obj[2].Id], 0);
  772. Grid.SetRow(vmRenders[obj[3].Id], 1);
  773. Grid.SetColumn(vmRenders[obj[3].Id], 0);
  774. Grid.SetRow(vmRenders[obj[4].Id], 1);
  775. Grid.SetColumn(vmRenders[obj[4].Id], 0);
  776. Grid.SetRow(vmRenders[obj[5].Id], 1);
  777. Grid.SetColumn(vmRenders[obj[5].Id], 0);
  778. Grid.SetRow(vmRenders[obj[6].Id], 1);
  779. Grid.SetColumn(vmRenders[obj[6].Id], 0);
  780. Grid.SetRow(vmRenders[obj[7].Id], 1);
  781. Grid.SetColumn(vmRenders[obj[7].Id], 0);
  782. for (int i = 0; i < 8; i++)
  783. {
  784. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false;
  785. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false;
  786. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true;
  787. ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption;
  788. }
  789. break;
  790. default:
  791. break;
  792. }
  793. }
  794. private void SaveImage(ProcedureSaveImageModel saveImageModel, ProcedureSaveImagePathModel saveImagePathModel, string path, ICogImage image, Bitmap reimage, bool result, bool isCompress)
  795. {
  796. if (string.IsNullOrEmpty(path) || string.IsNullOrWhiteSpace(path) || !Path.IsPathRooted(path))
  797. {
  798. _eventAggregator.GetEvent<TaskMessageNotification>().Publish(new Models.MessageStruct() { Message = "保存图像路径为无效的路径!", level = MessageLevel.Alarm });
  799. return;
  800. }
  801. Task.Run(() =>
  802. {
  803. try
  804. {
  805. DateTime now = DateTime.Now;
  806. if (saveImageModel == ProcedureSaveImageModel.Original)
  807. {
  808. string Originalpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  809. if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_OkNG_Time)
  810. {
  811. if (result)
  812. {
  813. Originalpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  814. }
  815. else
  816. {
  817. Originalpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  818. }
  819. }
  820. else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ok_Time)
  821. {
  822. if (result)
  823. {
  824. Originalpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  825. }
  826. else
  827. {
  828. return;
  829. }
  830. }
  831. else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ng_Time)
  832. {
  833. if (!result)
  834. {
  835. Originalpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  836. }
  837. else
  838. {
  839. return;
  840. }
  841. }
  842. else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Formula_ProductSN_Time)
  843. {
  844. //当前的产品配方名
  845. string formulaName = _productService.GetCurrentProduct().Name;
  846. //如果当前产品名称存在非法字符,则替换为下划线
  847. foreach (char c in Path.GetInvalidFileNameChars())
  848. {
  849. formulaName = formulaName.Replace(c, '_');
  850. }
  851. //获取当前的产品SN
  852. string productSN = _productService.CurrentProductCode;
  853. //如果产品SN存在非法字符,则替换为下划线
  854. foreach (char c in Path.GetInvalidFileNameChars())
  855. {
  856. productSN = productSN.Replace(c, '_');
  857. }
  858. //拍照结果
  859. string resultStr = result ? "OK" : "NG";
  860. Originalpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{formulaName}\\{productSN}\\{productSN}-{now.ToString("yyyy-MM-dd HH_mm_ss")}-{resultStr}.bmp";
  861. }
  862. if (!Directory.Exists(Path.GetDirectoryName(Originalpath))) //判断文件夹是否存在
  863. {
  864. Directory.CreateDirectory(Path.GetDirectoryName(Originalpath)); //创建文件夹
  865. }
  866. using (CogImageFileBMP _cogImageFileTool = new CogImageFileBMP())
  867. {
  868. _cogImageFileTool.Open(Originalpath, CogImageFileModeConstants.Write);
  869. _cogImageFileTool.Append(image);
  870. _cogImageFileTool.Close();
  871. }
  872. }
  873. else if (saveImageModel == ProcedureSaveImageModel.Recorded)
  874. {
  875. string Recordedpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  876. if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_OkNG_Time)
  877. {
  878. if (result)
  879. {
  880. Recordedpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  881. }
  882. else
  883. {
  884. Recordedpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  885. }
  886. }
  887. else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ok_Time)
  888. {
  889. if (result)
  890. {
  891. Recordedpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  892. }
  893. else
  894. {
  895. return;
  896. }
  897. }
  898. else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ng_Time)
  899. {
  900. if (!result)
  901. {
  902. Recordedpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  903. }
  904. else
  905. {
  906. return;
  907. }
  908. }
  909. else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Formula_ProductSN_Time)
  910. {
  911. //当前的产品配方名
  912. string formulaName = _productService.GetCurrentProduct().Name;
  913. //如果当前产品名称存在非法字符,则替换为下划线
  914. foreach (char c in Path.GetInvalidFileNameChars())
  915. {
  916. formulaName = formulaName.Replace(c, '_');
  917. }
  918. //获取当前的产品SN
  919. string productSN = _productService.CurrentProductCode;
  920. //如果产品SN存在非法字符,则替换为下划线
  921. foreach (char c in Path.GetInvalidFileNameChars())
  922. {
  923. productSN = productSN.Replace(c, '_');
  924. }
  925. //拍照结果
  926. string resultStr = result ? "OK" : "NG";
  927. Recordedpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{formulaName}\\{productSN}\\{productSN}-{now.ToString("yyyy-MM-dd HH_mm_ss")}-{resultStr}.bmp";
  928. }
  929. if (!Directory.Exists(Path.GetDirectoryName(Recordedpath))) //判断文件夹是否存在
  930. {
  931. Directory.CreateDirectory(Path.GetDirectoryName(Recordedpath)); //创建文件夹
  932. }
  933. if (isCompress)
  934. {
  935. ImageHelper.CompressImage(reimage, Recordedpath, 100);
  936. }
  937. else
  938. {
  939. reimage.Save(Recordedpath);
  940. reimage.Dispose();
  941. }
  942. }
  943. else if (saveImageModel == ProcedureSaveImageModel.OriginalAndRecorded)
  944. {
  945. string Originalpath = $"{path}\\Original\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  946. string Recordedpath = $"{path}\\Recored\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  947. if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_OkNG_Time)
  948. {
  949. if (result)
  950. {
  951. Originalpath = $"{path}\\Original\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  952. Recordedpath = $"{path}\\Recored\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  953. }
  954. else
  955. {
  956. Originalpath = $"{path}\\Original\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  957. Recordedpath = $"{path}\\Recored\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  958. }
  959. }
  960. else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ok_Time)
  961. {
  962. if (result)
  963. {
  964. Originalpath = $"{path}\\Original\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  965. Recordedpath = $"{path}\\Recored\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  966. }
  967. else
  968. {
  969. return;
  970. }
  971. }
  972. else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ng_Time)
  973. {
  974. if (!result)
  975. {
  976. Originalpath = $"{path}\\Original\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  977. Recordedpath = $"{path}\\Recored\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp";
  978. }
  979. else
  980. {
  981. return;
  982. }
  983. }
  984. else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Formula_ProductSN_Time)
  985. {
  986. //当前的产品配方名
  987. string formulaName = _productService.GetCurrentProduct().Name;
  988. //如果当前产品名称存在非法字符,则替换为下划线
  989. foreach (char c in Path.GetInvalidFileNameChars())
  990. {
  991. formulaName = formulaName.Replace(c, '_');
  992. }
  993. //获取当前的产品SN
  994. string productSN = _productService.CurrentProductCode;
  995. //如果产品SN存在非法字符,则替换为下划线
  996. foreach (char c in Path.GetInvalidFileNameChars())
  997. {
  998. productSN = productSN.Replace(c, '_');
  999. }
  1000. //拍照结果
  1001. string resultStr = result ? "OK" : "NG";
  1002. Originalpath = $"{path}\\Original\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{formulaName}\\{productSN}\\{productSN}-{now.ToString("yyyy-MM-dd HH_mm_ss")}-{resultStr}.bmp";
  1003. Recordedpath = $"{path}\\Recored\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{formulaName}\\{productSN}\\{productSN}-{now.ToString("yyyy-MM-dd HH_mm_ss")}-{resultStr}.bmp";
  1004. }
  1005. if (!Directory.Exists(Path.GetDirectoryName(Originalpath))) //判断文件夹是否存在
  1006. {
  1007. Directory.CreateDirectory(Path.GetDirectoryName(Originalpath)); //创建文件夹
  1008. }
  1009. using (CogImageFileBMP _cogImageFileTool = new CogImageFileBMP())
  1010. {
  1011. _cogImageFileTool.Open(Originalpath, CogImageFileModeConstants.Write);
  1012. _cogImageFileTool.Append(image);
  1013. _cogImageFileTool.Close();
  1014. }
  1015. if (!Directory.Exists(Path.GetDirectoryName(Recordedpath))) //判断文件夹是否存在
  1016. {
  1017. Directory.CreateDirectory(Path.GetDirectoryName(Recordedpath)); //创建文件夹
  1018. }
  1019. if (isCompress)
  1020. {
  1021. ImageHelper.CompressImage(reimage, Recordedpath, 100);
  1022. }
  1023. else
  1024. {
  1025. reimage.Save(Recordedpath);
  1026. reimage.Dispose();
  1027. }
  1028. }
  1029. }
  1030. catch (Exception ex)
  1031. {
  1032. LogHelper.WriteLogError("保存流程运行结果的图片时出错!", ex);
  1033. }
  1034. });
  1035. }
  1036. private void ProductChanged(ProductModel product)
  1037. {
  1038. this.gridRender.Dispatcher.BeginInvoke(new Action(() =>
  1039. {
  1040. foreach (var item in vmRenders)
  1041. {
  1042. try
  1043. {
  1044. if (((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Tag != null)
  1045. {
  1046. ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Image = null;
  1047. ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).StaticGraphics.Clear();
  1048. break;
  1049. }
  1050. }
  1051. catch (Exception ex)
  1052. {
  1053. LogHelper.WriteLogError(Lang.切换产品清除主页图像时出错, ex);
  1054. }
  1055. }
  1056. }));
  1057. }
  1058. }
  1059. }