ShowVisionRender.xaml.cs 71 KB

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