ShowVisionRender.xaml.cs 71 KB

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