using HalconDotNet;
|
using LB_SmartVision.Tool;
|
using System.Data;
|
using System.Runtime.InteropServices;
|
using System.Xml.Linq;
|
|
namespace LB_SmartVision.Forms.Pages.ProcessPage
|
{
|
public partial class AllProcessesPage : TabPage
|
{
|
public ObservableConcurrentDictionary<string, ProcessControl> dicProcessControls = new ObservableConcurrentDictionary<string, ProcessControl>();
|
|
/// <summary>
|
/// 实例化流程界面
|
/// </summary>
|
/// <param name="dicProcesses"></param>
|
public AllProcessesPage()
|
{
|
InitializeComponent();
|
|
Name = "AllProcessesPage";
|
Text = "主界面";
|
//this.Font = new Font("Microsoft YaHei UI", 16F, FontStyle.Regular, GraphicsUnit.Point, 0);
|
this.BackColor = Color.FromArgb(32, 41, 50);
|
|
InitVisionUI();
|
this.Invalidated += AllProcessesPage_Invalidated;
|
}
|
|
private void AllProcessesPage_Invalidated(object? sender, InvalidateEventArgs e) => InitVisionUI();
|
|
public void InitVisionUI()
|
{
|
List<string> keys = dicProcessControls.Keys.ToList();
|
|
foreach (var title in keys)
|
{
|
bool isExist = false;
|
foreach (var layout in GlobalVar.dicLayout.Values)
|
{
|
if (layout.Title == title)
|
{
|
isExist = true;
|
break;
|
}
|
}
|
|
if (!isExist)
|
{
|
if (dicProcessControls.ContainsKey(title))
|
{
|
this.controlsPanel.Controls.Remove(dicProcessControls[title]);
|
dicProcessControls.TryRemove(title, out _);
|
}
|
}
|
}
|
|
int enableLayout = 0;
|
foreach (var layout in GlobalVar.dicLayout.Values)
|
{
|
if (GlobalVar.dicProcesses.ContainsKey(layout.ProcessName))
|
enableLayout++;
|
}
|
|
int index = 0;
|
for (int i = 0; i < GlobalVar.dicLayout.Count; i++)
|
{
|
string name = GlobalVar.dicLayout[i].ProcessName;
|
string title = GlobalVar.dicLayout[i].Title;
|
if (GlobalVar.dicProcesses.ContainsKey(name))
|
{
|
if (dicProcessControls.ContainsKey(title))
|
{
|
ProcessControl processControl = dicProcessControls[title];
|
processControl.Size
|
= new Size(this.controlsPanel.Size.Width / enableLayout
|
, this.controlsPanel.Size.Height);
|
processControl.Location
|
= new Point(processControl.Size.Width * index, 0);
|
|
if (GlobalVar.dicProcesses[name].GetImage(GlobalVar.dicLayout[i], out _, out HObject RecordImage))
|
dicProcessControls[title].ShowHoImage(RecordImage);
|
}
|
else
|
{
|
ProcessControl processControl = new ProcessControl(GlobalVar.dicLayout[i]);
|
processControl.Size
|
= new Size(this.controlsPanel.Size.Width / enableLayout
|
, this.controlsPanel.Size.Height);
|
processControl.Location
|
= new Point(processControl.Size.Width * index, 0);
|
processControl.SetTitle(title);
|
|
dicProcessControls.TryAdd(title, processControl);
|
this.controlsPanel.Controls.Add(processControl);
|
|
if (GlobalVar.dicProcesses[name].GetImage(GlobalVar.dicLayout[i], out _, out HObject RecordImage))
|
dicProcessControls[title].ShowHoImage(RecordImage);
|
}
|
index++;
|
}
|
}
|
}
|
}
|
}
|