using Cognex.VisionPro; using Cognex.VisionPro.ImageFile; using log4net.Core; using MahApps.Metro.Controls; using Prism.Events; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Forms.Integration; using System.Windows.Interop; using TeamAAS_VP.Core; using TeamAAS_VP.Enums; using TeamAAS_VP.Events; using TeamAAS_VP.Models; using TeamAAS_VP.Resources.Languages; using TeamAAS_VP.ViewModels; using TeamAAS_VP.ViewModels.Home; using TeamAAS_VP; using static MaterialDesignThemes.Wpf.Theme.ToolBar; namespace TeamAAS_VP.Views.Home { /// /// Interaction logic for ShowVisionRender /// public partial class ShowVisionRender : UserControl { ShowVisionRenderViewModel viewModel; Dictionary vmRenders; Dictionary Titles; IEventAggregator _eventAggregator; public ShowVisionRender() { InitializeComponent(); vmRenders = new Dictionary(); Titles = new Dictionary(); viewModel = DataContext as ShowVisionRenderViewModel; _eventAggregator = viewModel._eventAggregator; viewModel.UpdateLayout += ViewModel_UpdateLayout; _eventAggregator.GetEvent().Subscribe(UpdateRenderModuleSource); _eventAggregator.GetEvent().Subscribe(ProductChanged); } private void UpdateRenderModuleSource(ShowRender render) { //foreach (var item in vmRenders) //{ // if (item.Key== render.Id) // { // App.Current.Dispatcher.Invoke(new Action(() => // { // item.Value.ModuleSource = render.ModuleSource; // })); // break; // } //} this.gridRender.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in vmRenders) { if (((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Tag!=null && ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Tag.ToString() == render.CameraName) { ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Image = render.Image; ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).StaticGraphics.Clear(); if (render.Graphic!=null) ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).StaticGraphics.AddList(render.Graphic, ""); if (render.Record != null) ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Record = render.Record; if (render.IsSaveImage) { 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); } break; } } /* foreach (var item in gridRender.Children) { if (item is WindowsFormsHost && ((WindowsFormsHost)item).Child is Cognex.VisionPro.CogRecordDisplay) { if (((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).Tag != null && ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).Tag.ToString() == render.CameraName) { ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).Image = render.Image; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).StaticGraphics.Clear(); ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).StaticGraphics.AddList(render.Graphic, ""); if (render.Record != null) ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).Record = render.Record; if (render.IsSaveImage) { 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); } break; } } else if (item is Grid) { foreach (var item1 in ((Grid)item).Children) { if (item1 is WindowsFormsHost && ((WindowsFormsHost)item1).Child is Cognex.VisionPro.CogRecordDisplay) { if (((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item1).Child).Tag != null && ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item1).Child).Tag.ToString() == render.CameraName) { ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item1).Child).Image = render.Image; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item1).Child).StaticGraphics.Clear(); ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item1).Child).StaticGraphics.AddList(render.Graphic, ""); if (render.Record != null) ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)item).Child).Record = render.Record; if (render.IsSaveImage) { 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); } break; } } } break; } }*/ })); } Grid grid1 = new Grid(); Grid grid2 = new Grid(); Grid grid3 = new Grid(); Grid grid4 = new Grid(); Grid grid5 = new Grid(); Grid grid6 = new Grid(); Grid grid7 = new Grid(); Grid grid8 = new Grid(); private void ViewModel_UpdateLayout(System.Collections.ObjectModel.ObservableCollection obj) { System.Windows.Media.FontFamily font = Application.Current.Resources["DefaultFont"] as System.Windows.Media.FontFamily; if (vmRenders.Count > 0) { foreach (var render in vmRenders) { render.Value.Dispose(); } } vmRenders.Clear(); gridRender.Children.Clear(); Titles.Clear(); if (obj == null) { return; } if (obj.Count == 0) { return; } Grid grid = new Grid(); gridRender.RowDefinitions.Clear(); gridRender.ColumnDefinitions.Clear(); System.Windows.Thickness margin = new System.Windows.Thickness(2); switch (obj.Count) { case 1: vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } }); 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 }); gridRender.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); gridRender.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ShowGridLines = false; gridRender.Children.Add(vmRenders[obj[0].Id]); gridRender.Children.Add(Titles[obj[0].Id]); Grid.SetRow(vmRenders[obj[0].Id], 1); Grid.SetColumn(vmRenders[obj[0].Id], 0); Grid.SetRowSpan(vmRenders[obj[0].Id], 1); Grid.SetColumnSpan(vmRenders[obj[0].Id], 1); Grid.SetRow(Titles[obj[0].Id], 0); Grid.SetColumn(Titles[obj[0].Id], 0); ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[0].Id]).Child).HorizontalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[0].Id]).Child).VerticalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[0].Id]).Child).AutoFit = true; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[0].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption; break; case 2: //增加显示界面 vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } }); vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } }); 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 }); 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 }); //布局 gridRender.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); gridRender.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ShowGridLines = true; gridRender.Children.Add(vmRenders[obj[0].Id]); gridRender.Children.Add(vmRenders[obj[1].Id]); gridRender.Children.Add(Titles[obj[0].Id]); gridRender.Children.Add(Titles[obj[1].Id]); Grid.SetRow(vmRenders[obj[0].Id], 1); Grid.SetColumn(vmRenders[obj[0].Id], 0); Grid.SetRow(vmRenders[obj[1].Id], 1); Grid.SetColumn(vmRenders[obj[1].Id], 1); Grid.SetRowSpan(vmRenders[obj[0].Id], 1); Grid.SetColumnSpan(vmRenders[obj[0].Id], 1); Grid.SetRow(Titles[obj[0].Id], 0); Grid.SetColumn(Titles[obj[0].Id], 0); Grid.SetRow(Titles[obj[1].Id], 0); Grid.SetColumn(Titles[obj[1].Id], 1); for (int i = 0; i < 2; i++) { ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption; } break; case 3: //增加显示界面 vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } }); vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } }); vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } }); 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 }); 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 }); 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 }); //布局 gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ShowGridLines = true; grid1 = new Grid(); grid2 = new Grid(); grid3 = new Grid(); grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); gridRender.Children.Add(grid1); gridRender.Children.Add(grid2); gridRender.Children.Add(grid3); Grid.SetRow(grid1, 0); Grid.SetColumn(grid1, 0); Grid.SetRow(grid2, 0); Grid.SetColumn(grid2, 1); Grid.SetRow(grid3, 1); Grid.SetColumn(grid3, 0); Grid.SetColumnSpan(grid3, 2); grid1.Children.Add(vmRenders[obj[0].Id]); grid2.Children.Add(vmRenders[obj[1].Id]); grid3.Children.Add(vmRenders[obj[2].Id]); grid1.Children.Add(Titles[obj[0].Id]); grid2.Children.Add(Titles[obj[1].Id]); grid3.Children.Add(Titles[obj[2].Id]); Grid.SetRow(vmRenders[obj[0].Id], 1); Grid.SetColumn(vmRenders[obj[0].Id], 0); Grid.SetRow(vmRenders[obj[1].Id], 1); Grid.SetColumn(vmRenders[obj[1].Id], 0); Grid.SetRow(vmRenders[obj[2].Id], 1); Grid.SetColumn(vmRenders[obj[2].Id], 0); Grid.SetRow(Titles[obj[0].Id], 0); Grid.SetColumn(Titles[obj[0].Id], 0); Grid.SetRow(Titles[obj[1].Id], 0); Grid.SetColumn(Titles[obj[1].Id], 0); Grid.SetRow(Titles[obj[2].Id], 0); Grid.SetColumn(Titles[obj[2].Id], 0); for (int i = 0; i < 3; i++) { ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption; } break; case 4: //增加显示界面 vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } }); vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } }); vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } }); vmRenders.Add(obj[3].Id, new WindowsFormsHost() { Tag = obj[3].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[3].CameraName } }); 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 }); 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 }); 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 }); 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 }); //布局 gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ShowGridLines = true; grid1 = new Grid(); grid2 = new Grid(); grid3 = new Grid(); grid4 = new Grid(); grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); gridRender.Children.Add(grid1); gridRender.Children.Add(grid2); gridRender.Children.Add(grid3); gridRender.Children.Add(grid4); Grid.SetRow(grid1, 0); Grid.SetColumn(grid1, 0); Grid.SetRow(grid2, 0); Grid.SetColumn(grid2, 1); Grid.SetRow(grid3, 1); Grid.SetColumn(grid3, 0); Grid.SetRow(grid4, 1); Grid.SetColumn(grid4, 1); grid1.Children.Add(vmRenders[obj[0].Id]); grid2.Children.Add(vmRenders[obj[1].Id]); grid3.Children.Add(vmRenders[obj[2].Id]); grid4.Children.Add(vmRenders[obj[3].Id]); grid1.Children.Add(Titles[obj[0].Id]); grid2.Children.Add(Titles[obj[1].Id]); grid3.Children.Add(Titles[obj[2].Id]); grid4.Children.Add(Titles[obj[3].Id]); Grid.SetRow(vmRenders[obj[0].Id], 1); Grid.SetColumn(vmRenders[obj[0].Id], 0); Grid.SetRow(vmRenders[obj[1].Id], 1); Grid.SetColumn(vmRenders[obj[1].Id], 0); Grid.SetRow(vmRenders[obj[2].Id], 1); Grid.SetColumn(vmRenders[obj[2].Id], 0); Grid.SetRow(vmRenders[obj[3].Id], 1); Grid.SetColumn(vmRenders[obj[3].Id], 0); //Grid.SetRowSpan(vmRenders[obj[2].Id], 1); //Grid.SetColumnSpan(vmRenders[obj[2].Id], 0); Grid.SetRow(Titles[obj[0].Id], 0); Grid.SetColumn(Titles[obj[0].Id], 0); Grid.SetRow(Titles[obj[1].Id], 0); Grid.SetColumn(Titles[obj[1].Id], 0); Grid.SetRow(Titles[obj[2].Id], 0); Grid.SetColumn(Titles[obj[2].Id], 0); Grid.SetRow(Titles[obj[3].Id], 0); Grid.SetColumn(Titles[obj[3].Id], 0); for (int i = 0; i < 4; i++) { ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption; } break; case 5: //增加显示界面 vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } }); vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } }); vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } }); vmRenders.Add(obj[3].Id, new WindowsFormsHost() { Tag = obj[3].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[3].CameraName } }); vmRenders.Add(obj[4].Id, new WindowsFormsHost() { Tag = obj[4].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[4].CameraName } }); 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}); 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 }); 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 }); 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 }); 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 }); //布局 gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ShowGridLines = true; grid1 = new Grid() { Background= System.Windows.Media.Brushes.White }; grid2 = new Grid() { Background = System.Windows.Media.Brushes.White }; grid3 = new Grid() { Background = System.Windows.Media.Brushes.White }; grid4 = new Grid() { Background = System.Windows.Media.Brushes.White }; grid5 = new Grid() { Background = System.Windows.Media.Brushes.White }; grid6 = new Grid() { Background = System.Windows.Media.Brushes.White }; grid6.ShowGridLines = true; grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid6.ColumnDefinitions.Add(new ColumnDefinition()); grid6.ColumnDefinitions.Add(new ColumnDefinition()); grid6.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.Children.Add(grid1); gridRender.Children.Add(grid2); gridRender.Children.Add(grid6); grid6.Children.Add(grid3); grid6.Children.Add(grid4); grid6.Children.Add(grid5); grid1.Children.Add(vmRenders[obj[0].Id]); grid2.Children.Add(vmRenders[obj[1].Id]); grid3.Children.Add(vmRenders[obj[2].Id]); grid4.Children.Add(vmRenders[obj[3].Id]); grid5.Children.Add(vmRenders[obj[4].Id]); grid1.Children.Add(Titles[obj[0].Id]); grid2.Children.Add(Titles[obj[1].Id]); grid3.Children.Add(Titles[obj[2].Id]); grid4.Children.Add(Titles[obj[3].Id]); grid5.Children.Add(Titles[obj[4].Id]); Grid.SetRow(grid6, 1); Grid.SetColumn(grid6, 0); Grid.SetColumnSpan(grid6, 2); Grid.SetRow(grid1, 0); Grid.SetColumn(grid1, 0); Grid.SetRow(grid2, 0); Grid.SetColumn(grid2, 1); Grid.SetRow(grid3, 0); Grid.SetColumn(grid3, 0); Grid.SetRow(grid4, 0); Grid.SetColumn(grid4, 1); Grid.SetRow(grid5, 0); Grid.SetColumn(grid5, 2); Grid.SetRow(Titles[obj[0].Id], 0); Grid.SetColumn(Titles[obj[0].Id], 0); Grid.SetRow(Titles[obj[1].Id], 0); Grid.SetColumn(Titles[obj[1].Id], 0); Grid.SetRow(Titles[obj[2].Id], 0); Grid.SetColumn(Titles[obj[2].Id], 0); Grid.SetRow(Titles[obj[3].Id], 0); Grid.SetColumn(Titles[obj[3].Id], 0); Grid.SetRow(Titles[obj[4].Id], 0); Grid.SetColumn(Titles[obj[4].Id], 0); Grid.SetRow(vmRenders[obj[0].Id], 1); Grid.SetColumn(vmRenders[obj[0].Id], 0); Grid.SetRow(vmRenders[obj[1].Id], 1); Grid.SetColumn(vmRenders[obj[1].Id], 0); Grid.SetRow(vmRenders[obj[2].Id], 1); Grid.SetColumn(vmRenders[obj[2].Id], 0); Grid.SetRow(vmRenders[obj[3].Id], 1); Grid.SetColumn(vmRenders[obj[3].Id], 0); Grid.SetRow(vmRenders[obj[4].Id], 1); Grid.SetColumn(vmRenders[obj[4].Id], 0); for (int i = 0; i < 5; i++) { ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption; } break; case 6: //增加显示界面 vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } }); vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } }); vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } }); vmRenders.Add(obj[3].Id, new WindowsFormsHost() { Tag = obj[3].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[3].CameraName } }); vmRenders.Add(obj[4].Id, new WindowsFormsHost() { Tag = obj[4].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[4].CameraName } }); vmRenders.Add(obj[5].Id, new WindowsFormsHost() { Tag = obj[5].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[5].CameraName } }); 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 }); 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 }); 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 }); 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 }); 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 }); 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 }); //布局 gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ShowGridLines = true; grid1 = new Grid(); grid2 = new Grid(); grid3 = new Grid(); grid4 = new Grid(); grid5 = new Grid(); grid6 = new Grid(); grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); gridRender.Children.Add(grid1); gridRender.Children.Add(grid2); gridRender.Children.Add(grid3); gridRender.Children.Add(grid4); gridRender.Children.Add(grid5); gridRender.Children.Add(grid6); Grid.SetRow(grid1, 0); Grid.SetColumn(grid1, 0); Grid.SetRow(grid2, 0); Grid.SetColumn(grid2, 1); Grid.SetRow(grid3, 0); Grid.SetColumn(grid3, 2); Grid.SetRow(grid4, 1); Grid.SetColumn(grid4, 0); Grid.SetRow(grid5, 1); Grid.SetColumn(grid5, 1); Grid.SetRow(grid6, 1); Grid.SetColumn(grid6, 2); grid1.Children.Add(vmRenders[obj[0].Id]); grid2.Children.Add(vmRenders[obj[1].Id]); grid3.Children.Add(vmRenders[obj[2].Id]); grid4.Children.Add(vmRenders[obj[3].Id]); grid5.Children.Add(vmRenders[obj[4].Id]); grid6.Children.Add(vmRenders[obj[5].Id]); grid1.Children.Add(Titles[obj[0].Id]); grid2.Children.Add(Titles[obj[1].Id]); grid3.Children.Add(Titles[obj[2].Id]); grid4.Children.Add(Titles[obj[3].Id]); grid5.Children.Add(Titles[obj[4].Id]); grid6.Children.Add(Titles[obj[5].Id]); Grid.SetRow(Titles[obj[0].Id], 0); Grid.SetColumn(Titles[obj[0].Id], 0); Grid.SetRow(Titles[obj[1].Id], 0); Grid.SetColumn(Titles[obj[1].Id], 0); Grid.SetRow(Titles[obj[2].Id], 0); Grid.SetColumn(Titles[obj[2].Id], 0); Grid.SetRow(Titles[obj[3].Id], 0); Grid.SetColumn(Titles[obj[3].Id], 0); Grid.SetRow(Titles[obj[4].Id], 0); Grid.SetColumn(Titles[obj[4].Id], 0); Grid.SetRow(Titles[obj[5].Id], 0); Grid.SetColumn(Titles[obj[5].Id], 0); Grid.SetRow(vmRenders[obj[0].Id], 1); Grid.SetColumn(vmRenders[obj[0].Id], 0); Grid.SetRow(vmRenders[obj[1].Id], 1); Grid.SetColumn(vmRenders[obj[1].Id], 0); Grid.SetRow(vmRenders[obj[2].Id], 1); Grid.SetColumn(vmRenders[obj[2].Id], 0); Grid.SetRow(vmRenders[obj[3].Id], 1); Grid.SetColumn(vmRenders[obj[3].Id], 0); Grid.SetRow(vmRenders[obj[4].Id], 1); Grid.SetColumn(vmRenders[obj[4].Id], 0); Grid.SetRow(vmRenders[obj[5].Id], 1); Grid.SetColumn(vmRenders[obj[5].Id], 0); for (int i = 0; i < 6; i++) { ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption; } break; case 7: //增加显示界面 vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } }); vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } }); vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } }); vmRenders.Add(obj[3].Id, new WindowsFormsHost() { Tag = obj[3].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[3].CameraName } }); vmRenders.Add(obj[4].Id, new WindowsFormsHost() { Tag = obj[4].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[4].CameraName } }); vmRenders.Add(obj[5].Id, new WindowsFormsHost() { Tag = obj[5].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[5].CameraName } }); vmRenders.Add(obj[6].Id, new WindowsFormsHost() { Tag = obj[6].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[6].CameraName } }); 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 }); 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 }); 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 }); 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 }); 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 }); 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 }); 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 }); //布局 gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ShowGridLines = true; grid1 = new Grid(); grid2 = new Grid(); grid3 = new Grid(); grid4 = new Grid(); grid5 = new Grid(); grid6 = new Grid(); grid7 = new Grid(); grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid7.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid7.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); gridRender.Children.Add(grid1); gridRender.Children.Add(grid2); gridRender.Children.Add(grid3); gridRender.Children.Add(grid4); gridRender.Children.Add(grid5); gridRender.Children.Add(grid6); gridRender.Children.Add(grid7); Grid.SetRow(grid1, 0); Grid.SetColumn(grid1, 0); Grid.SetRow(grid2, 0); Grid.SetColumn(grid2, 1); Grid.SetRow(grid3, 0); Grid.SetColumn(grid3, 2); Grid.SetRow(grid4, 0); Grid.SetColumn(grid4, 3); Grid.SetRow(grid5, 1); Grid.SetColumn(grid5, 0); Grid.SetRow(grid6, 1); Grid.SetColumn(grid6, 1); Grid.SetRow(grid7, 1); Grid.SetColumn(grid7, 2); grid1.Children.Add(vmRenders[obj[0].Id]); grid2.Children.Add(vmRenders[obj[1].Id]); grid3.Children.Add(vmRenders[obj[2].Id]); grid4.Children.Add(vmRenders[obj[3].Id]); grid5.Children.Add(vmRenders[obj[4].Id]); grid6.Children.Add(vmRenders[obj[5].Id]); grid7.Children.Add(vmRenders[obj[6].Id]); grid1.Children.Add(Titles[obj[0].Id]); grid2.Children.Add(Titles[obj[1].Id]); grid3.Children.Add(Titles[obj[2].Id]); grid4.Children.Add(Titles[obj[3].Id]); grid5.Children.Add(Titles[obj[4].Id]); grid6.Children.Add(Titles[obj[5].Id]); grid7.Children.Add(Titles[obj[6].Id]); Grid.SetRow(Titles[obj[0].Id], 0); Grid.SetColumn(Titles[obj[0].Id], 0); Grid.SetRow(Titles[obj[1].Id], 0); Grid.SetColumn(Titles[obj[1].Id], 0); Grid.SetRow(Titles[obj[2].Id], 0); Grid.SetColumn(Titles[obj[2].Id], 0); Grid.SetRow(Titles[obj[3].Id], 0); Grid.SetColumn(Titles[obj[3].Id], 0); Grid.SetRow(Titles[obj[4].Id], 0); Grid.SetColumn(Titles[obj[4].Id], 0); Grid.SetRow(Titles[obj[5].Id], 0); Grid.SetColumn(Titles[obj[5].Id], 0); Grid.SetRow(Titles[obj[6].Id], 0); Grid.SetColumn(Titles[obj[6].Id], 0); Grid.SetRow(vmRenders[obj[0].Id], 1); Grid.SetColumn(vmRenders[obj[0].Id], 0); Grid.SetRow(vmRenders[obj[1].Id], 1); Grid.SetColumn(vmRenders[obj[1].Id], 0); Grid.SetRow(vmRenders[obj[2].Id], 1); Grid.SetColumn(vmRenders[obj[2].Id], 0); Grid.SetRow(vmRenders[obj[3].Id], 1); Grid.SetColumn(vmRenders[obj[3].Id], 0); Grid.SetRow(vmRenders[obj[4].Id], 1); Grid.SetColumn(vmRenders[obj[4].Id], 0); Grid.SetRow(vmRenders[obj[5].Id], 1); Grid.SetColumn(vmRenders[obj[5].Id], 0); Grid.SetRow(vmRenders[obj[6].Id], 1); Grid.SetColumn(vmRenders[obj[6].Id], 0); for (int i = 0; i < 7; i++) { ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption; } break; case 8: //增加显示界面 vmRenders.Add(obj[0].Id, new WindowsFormsHost() { Tag = obj[0].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[0].CameraName } }); vmRenders.Add(obj[1].Id, new WindowsFormsHost() { Tag = obj[1].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[1].CameraName } }); vmRenders.Add(obj[2].Id, new WindowsFormsHost() { Tag = obj[2].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[2].CameraName } }); vmRenders.Add(obj[3].Id, new WindowsFormsHost() { Tag = obj[3].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[3].CameraName } }); vmRenders.Add(obj[4].Id, new WindowsFormsHost() { Tag = obj[4].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[4].CameraName } }); vmRenders.Add(obj[5].Id, new WindowsFormsHost() { Tag = obj[5].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[5].CameraName } }); vmRenders.Add(obj[6].Id, new WindowsFormsHost() { Tag = obj[6].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[6].CameraName } }); vmRenders.Add(obj[7].Id, new WindowsFormsHost() { Tag = obj[6].CameraName, Child = new Cognex.VisionPro.CogRecordDisplay() { Tag = obj[7].CameraName } }); 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 }); 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 }); 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 }); 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 }); 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 }); 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 }); 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 }); 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 }); //布局 gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.RowDefinitions.Add(new RowDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ColumnDefinitions.Add(new ColumnDefinition()); gridRender.ShowGridLines = true; grid1 = new Grid(); grid2 = new Grid(); grid3 = new Grid(); grid4 = new Grid(); grid5 = new Grid(); grid6 = new Grid(); grid7 = new Grid(); grid8 = new Grid(); grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid1.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid3.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid4.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid5.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid6.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid7.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid7.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); grid8.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); grid8.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }); gridRender.Children.Add(grid1); gridRender.Children.Add(grid2); gridRender.Children.Add(grid3); gridRender.Children.Add(grid4); gridRender.Children.Add(grid5); gridRender.Children.Add(grid6); gridRender.Children.Add(grid7); gridRender.Children.Add(grid8); Grid.SetRow(grid1, 0); Grid.SetColumn(grid1, 0); Grid.SetRow(grid2, 0); Grid.SetColumn(grid2, 1); Grid.SetRow(grid3, 0); Grid.SetColumn(grid3, 2); Grid.SetRow(grid4, 0); Grid.SetColumn(grid4, 3); Grid.SetRow(grid5, 1); Grid.SetColumn(grid5, 0); Grid.SetRow(grid6, 1); Grid.SetColumn(grid6, 1); Grid.SetRow(grid7, 1); Grid.SetColumn(grid7, 2); Grid.SetRow(grid8, 1); Grid.SetColumn(grid8, 3); grid1.Children.Add(vmRenders[obj[0].Id]); grid2.Children.Add(vmRenders[obj[1].Id]); grid3.Children.Add(vmRenders[obj[2].Id]); grid4.Children.Add(vmRenders[obj[3].Id]); grid5.Children.Add(vmRenders[obj[4].Id]); grid6.Children.Add(vmRenders[obj[5].Id]); grid7.Children.Add(vmRenders[obj[6].Id]); grid8.Children.Add(vmRenders[obj[7].Id]); grid1.Children.Add(Titles[obj[0].Id]); grid2.Children.Add(Titles[obj[1].Id]); grid3.Children.Add(Titles[obj[2].Id]); grid4.Children.Add(Titles[obj[3].Id]); grid5.Children.Add(Titles[obj[4].Id]); grid6.Children.Add(Titles[obj[5].Id]); grid7.Children.Add(Titles[obj[6].Id]); grid8.Children.Add(Titles[obj[7].Id]); Grid.SetRow(Titles[obj[0].Id], 0); Grid.SetColumn(Titles[obj[0].Id], 0); Grid.SetRow(Titles[obj[1].Id], 0); Grid.SetColumn(Titles[obj[1].Id], 0); Grid.SetRow(Titles[obj[2].Id], 0); Grid.SetColumn(Titles[obj[2].Id], 0); Grid.SetRow(Titles[obj[3].Id], 0); Grid.SetColumn(Titles[obj[3].Id], 0); Grid.SetRow(Titles[obj[4].Id], 0); Grid.SetColumn(Titles[obj[4].Id], 0); Grid.SetRow(Titles[obj[5].Id], 0); Grid.SetColumn(Titles[obj[5].Id], 0); Grid.SetRow(Titles[obj[6].Id], 0); Grid.SetColumn(Titles[obj[6].Id], 0); Grid.SetRow(Titles[obj[7].Id], 0); Grid.SetColumn(Titles[obj[7].Id], 0); Grid.SetRow(vmRenders[obj[0].Id], 1); Grid.SetColumn(vmRenders[obj[0].Id], 0); Grid.SetRow(vmRenders[obj[1].Id], 1); Grid.SetColumn(vmRenders[obj[1].Id], 0); Grid.SetRow(vmRenders[obj[2].Id], 1); Grid.SetColumn(vmRenders[obj[2].Id], 0); Grid.SetRow(vmRenders[obj[3].Id], 1); Grid.SetColumn(vmRenders[obj[3].Id], 0); Grid.SetRow(vmRenders[obj[4].Id], 1); Grid.SetColumn(vmRenders[obj[4].Id], 0); Grid.SetRow(vmRenders[obj[5].Id], 1); Grid.SetColumn(vmRenders[obj[5].Id], 0); Grid.SetRow(vmRenders[obj[6].Id], 1); Grid.SetColumn(vmRenders[obj[6].Id], 0); Grid.SetRow(vmRenders[obj[7].Id], 1); Grid.SetColumn(vmRenders[obj[7].Id], 0); for (int i = 0; i < 8; i++) { ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).HorizontalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).VerticalScrollBar = false; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).AutoFit = true; ((Cognex.VisionPro.CogRecordDisplay)((WindowsFormsHost)vmRenders[obj[i].Id]).Child).BackColor = System.Drawing.SystemColors.ActiveCaption; } break; default: break; } } /// /// 保存图像 /// /// 要保存图像的模式 /// 图像保存路径类型 /// 保存图像的文件夹路径 /// 原图像 /// 渲染图像 /// 拍照结果 /// 是否压缩 private void SaveImage(ProcedureSaveImageModel saveImageModel, ProcedureSaveImagePathModel saveImagePathModel, string path, ICogImage image, Bitmap reimage, bool result, bool isCompress) { if (string.IsNullOrEmpty(path) || string.IsNullOrWhiteSpace(path) || !Path.IsPathRooted(path)) { _eventAggregator.GetEvent().Publish(new Models.MessageStruct() { Message = "保存图像路径为无效的路径!", level = MessageLevel.Alarm }); return; } Task.Run(() => { try { DateTime now = DateTime.Now; if (saveImageModel == ProcedureSaveImageModel.Original) { string Originalpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_OkNG_Time) { if (result) { Originalpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } else { Originalpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } } else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ok_Time) { if (result) { Originalpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } else { return; } } else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ng_Time) { if (!result) { Originalpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } else { return; } } if (!Directory.Exists(Path.GetDirectoryName(Originalpath))) //判断文件夹是否存在 { Directory.CreateDirectory(Path.GetDirectoryName(Originalpath)); //创建文件夹 } using (CogImageFileBMP _cogImageFileTool = new CogImageFileBMP()) { _cogImageFileTool.Open(Originalpath, CogImageFileModeConstants.Write); _cogImageFileTool.Append(image); _cogImageFileTool.Close(); } } else if (saveImageModel == ProcedureSaveImageModel.Recorded) { string Recordedpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_OkNG_Time) { if (result) { Recordedpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } else { Recordedpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } } else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ok_Time) { if (result) { Recordedpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } else { return; } } else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ng_Time) { if (!result) { Recordedpath = $"{path}\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } else { return; } } if (!Directory.Exists(Path.GetDirectoryName(Recordedpath))) //判断文件夹是否存在 { Directory.CreateDirectory(Path.GetDirectoryName(Recordedpath)); //创建文件夹 } if (isCompress) { ImageHelper.CompressImage(reimage, Recordedpath, 100); } else { reimage.Save(Recordedpath); reimage.Dispose(); } } else if (saveImageModel == ProcedureSaveImageModel.OriginalAndRecorded) { string Originalpath = $"{path}\\Original\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; string Recordedpath = $"{path}\\Recored\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_OkNG_Time) { if (result) { Originalpath = $"{path}\\Original\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; Recordedpath = $"{path}\\Recored\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } else { Originalpath = $"{path}\\Original\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; Recordedpath = $"{path}\\Recored\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } } else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ok_Time) { if (result) { Originalpath = $"{path}\\Original\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; Recordedpath = $"{path}\\Recored\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\OK\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } else { return; } } else if (saveImagePathModel == ProcedureSaveImagePathModel.Month_Day_Ng_Time) { if (!result) { Originalpath = $"{path}\\Original\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; Recordedpath = $"{path}\\Recored\\{now.ToString("yyyy-MM")}\\{now.ToString("MM-dd")}\\NG\\{now.ToString("yyyy-MM-dd HH_mm_ss")}.bmp"; } else { return; } } if (!Directory.Exists(Path.GetDirectoryName(Originalpath))) //判断文件夹是否存在 { Directory.CreateDirectory(Path.GetDirectoryName(Originalpath)); //创建文件夹 } using (CogImageFileBMP _cogImageFileTool = new CogImageFileBMP()) { _cogImageFileTool.Open(Originalpath, CogImageFileModeConstants.Write); _cogImageFileTool.Append(image); _cogImageFileTool.Close(); } if (!Directory.Exists(Path.GetDirectoryName(Recordedpath))) //判断文件夹是否存在 { Directory.CreateDirectory(Path.GetDirectoryName(Recordedpath)); //创建文件夹 } if (isCompress) { ImageHelper.CompressImage(reimage, Recordedpath, 100); } else { reimage.Save(Recordedpath); reimage.Dispose(); } } } catch (Exception ex) { LogHelper.WriteLogError("保存流程运行结果的图片时出错!", ex); } }); } private void ProductChanged(ProductModel product) { this.gridRender.Dispatcher.BeginInvoke(new Action(() => { foreach (var item in vmRenders) { try { if (((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Tag != null) { ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).Image = null; ((Cognex.VisionPro.CogRecordDisplay)item.Value.Child).StaticGraphics.Clear(); break; } } catch (Exception ex) { LogHelper.WriteLogError(Lang.切换产品清除主页图像时出错, ex); } } })); } } }