ShowVisionRender.xaml.cs 76 KB

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