领胜LDS 键盘AOI检测项目
wells.liu
2020-07-04 642cd31f0d1586a2a5ca6f9a3b3364725f4f1ecd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
using Bro.Common.Helper;
using Bro.UI.Model.Winform;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Bro.M071.Process.UI
{
    [MenuNode("M071_MainForm", "运行界面", 1, "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;
            plImage.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);
            });
 
            txtBarcode.ReadOnly = Config.IsBarcodeManulInputBlocked;
 
            (Process as M071Process).OnClearBarcode -= M071_MainForm_OnClearBarcode;
            (Process as M071Process).OnClearBarcode += M071_MainForm_OnClearBarcode;
        }
 
        #region 图片区右键菜单
        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;
            tscEditLocation.BringToFront();
        }
        #endregion
 
        #region 标签编辑区
        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 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("标签修改完成");
        }
        #endregion
 
        #region 上方状态区
 
        #region 条码
        string _barcode = "";
        private void M071_MainForm_KeyUp(object sender, KeyEventArgs e)
        {
            string keyStr = e.KeyCode.ToString();
            if (keyStr.Length == 1)
            {
                _barcode += keyStr.ToUpper();
            }
 
            if (e.KeyValue == 13)
            {
                txtBarcode.Text = _barcode;
                _barcode = "";
            }
        }
 
        private void txtBarcode_TextChanged(object sender, EventArgs e)
        {
            (Process as M071Process).BarCode = txtBarcode.Text.Trim();
        }
 
        private void M071_MainForm_OnClearBarcode()
        {
            txtBarcode.BeginInvoke(new Action(() => txtBarcode.Clear()));
        }
        #endregion
 
        #endregion
 
    }
}