领胜LDS 键盘AOI检测项目
wells.liu
2020-07-03 a3c6aea6817e1597aa13fe8a585906af237df873
src/Bro.M071.Process/UI/M071_MainForm.cs
@@ -1,4 +1,5 @@
using Bro.UI.Model.Winform;
using Bro.Common.Helper;
using Bro.UI.Model.Winform;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -14,9 +15,115 @@
    [MenuNode("M071_MainForm", "键盘检测主界面", 3, "M071Node", true)]
    public partial class M071_MainForm : MenuFrmBase
    {
        Canvas cvImage = new Canvas();
        M071Config Config => Process?.IConfig as M071Config;
        public M071_MainForm()
        {
            InitializeComponent();
            cvImage.IsShowElementList = false;
            tsmiShowStatusBar.Checked = cvImage.IsShowStatusBar = false;
            tsmiShowToolBar.Checked = cvImage.IsShowToolBar = false;
            cvImage.Dock = DockStyle.Fill;
            this.Controls.Add(cvImage);
            tscEditLocation.Visible = tsmiShowEditor.Checked = false;
        }
        public override void OnProcessUpdated()
        {
            base.OnProcessUpdated();
            if (Config == null)
                return;
            if (string.IsNullOrWhiteSpace(Config.BackgroundImagePath))
                return;
            try
            {
                Bitmap image = (Bitmap)Image.FromFile(Config.BackgroundImagePath);
                cvImage.LoadImage(image);
            }
            catch (Exception ex)
            {
                LogAsync(new LogMsg(DateTime.Now, "载入背景图异常", ex.Message));
                return;
            }
            cvImage.Elements.Clear();
            lvMeasures.Items.Clear();
            Config.MeasurementUnitCollection.ForEach(u =>
            {
                if (!u.IsEnabled)
                    return;
                var ele = new KeyIndicator(u.Id, u.DisplayLocation);
                cvImage.Elements.Add(ele);
                ListViewItem item = new ListViewItem(u.GetDisplayText());
                item.Tag = u.Id;
                lvMeasures.Items.Add(item);
            });
        }
        private void lvMeasures_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lvMeasures.SelectedItems.Count <= 0)
                return;
            var ele = cvImage.Elements.FirstOrDefault(u => u.ID == lvMeasures.SelectedItems[0].Tag.ToString());
            propGridKeyIndicator.SelectedObject = ele;
        }
        private void tsmiShowToolBar_CheckedChanged(object sender, EventArgs e)
        {
            cvImage.IsShowToolBar = tsmiShowToolBar.Checked;
        }
        private void tsmiShowStatusBar_CheckedChanged(object sender, EventArgs e)
        {
            cvImage.IsShowStatusBar = tsmiShowStatusBar.Checked;
        }
        private void tsmiShowEditor_CheckedChanged(object sender, EventArgs e)
        {
            tscEditLocation.Visible = tsmiShowEditor.Checked;
        }
        private void btnCancelEdit_Click(object sender, EventArgs e)
        {
            cvImage.Elements.Clear();
            lvMeasures.Items.Clear();
            Config.MeasurementUnitCollection.ForEach(u =>
            {
                if (!u.IsEnabled)
                    return;
                var ele = new KeyIndicator(u.Id, u.DisplayLocation);
                cvImage.Elements.Add(ele);
                ListViewItem item = new ListViewItem(u.GetDisplayText());
                item.Tag = u.Id;
                lvMeasures.Items.Add(item);
            });
            MessageBox.Show("取消标签修改");
        }
        private void btnConfirmEdit_Click(object sender, EventArgs e)
        {
            cvImage.Elements.ToList().ForEach(ele =>
            {
                var measure = Config.MeasurementUnitCollection.FirstOrDefault(u => u.Id == ele.ID);
                if (measure != null)
                {
                    measure.DisplayLocation = (ele as KeyIndicator).DisplayRect;
                }
            });
            MessageBox.Show("标签修改完成");
        }
    }
}