| | |
| | | |
| | | namespace Bro.M071.Process |
| | | { |
| | | public class KeyLocation : IComplexDisplay |
| | | { |
| | | [Category("键名配置")] |
| | | [Description("单键键名")] |
| | | [TypeConverter(typeof(KeyNameDictConverter))] |
| | | public string Key { get; set; } |
| | | |
| | | [Category("位置配置")] |
| | | [Description("单键在键盘平面图上的位置显示")] |
| | | public Rectangle KeyRect { get; set; } = new Rectangle(); |
| | | |
| | | [Category("位置配置")] |
| | | [Description("单键之后间隙位置")] |
| | | public Rectangle IntervalRect { get; set; } = new Rectangle(); |
| | | |
| | | public string GetDisplayText() |
| | | { |
| | | return $"{Key}:{KeyRect.X},{KeyRect.Y},{KeyRect.Width},{KeyRect.Height}"; |
| | | } |
| | | } |
| | | |
| | | |
| | | public class KeyAlgorithem : IComplexDisplay |
| | | { |
| | | [Browsable(false)] |
| | |
| | | { |
| | | Measurements?.ForEach(m => m?.Dispose()); |
| | | Measurements = null; |
| | | |
| | | ElementList = null; |
| | | Barcode = null; |
| | | GC.Collect(); |
| | | } |
| | |
| | | |
| | | #region 显示 |
| | | [Browsable(false)] |
| | | public Rectangle DisplayLocation { get; set; } = new Rectangle(); |
| | | public Rectangle DisplayLocation { get; set; } = new Rectangle(10, 10, 100, 100); |
| | | #endregion |
| | | |
| | | #region 检测结果 |
| | |
| | | private void K_PropertyChanged(object sender, PropertyChangedEventArgs e) |
| | | { |
| | | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("KeyUnitCollection")); |
| | | } |
| | | |
| | | public MeasurementUnit Copy() |
| | | { |
| | | MeasurementUnit mUnit = new MeasurementUnit(); |
| | | |
| | | mUnit.Id = this.Id; |
| | | mUnit.Name = this.Name; |
| | | mUnit.IsEnabled = this.IsEnabled; |
| | | mUnit.MeasureType = this.MeasureType; |
| | | |
| | | mUnit.DisplayLocation = new Rectangle(this.DisplayLocation.Location, this.DisplayLocation.Size); |
| | | |
| | | if (this.Spec == null) |
| | | { |
| | | mUnit.Spec = null; |
| | | } |
| | | else |
| | | { |
| | | mUnit.Spec = new MeasureType(); |
| | | mUnit.Spec.Code = this.Spec.Code; |
| | | mUnit.Spec.AlgorithemPath = this.Spec.AlgorithemPath; |
| | | mUnit.Spec.StandardValue = this.Spec.StandardValue; |
| | | mUnit.Spec.Tolrenance_Positive = this.Spec.Tolrenance_Positive; |
| | | mUnit.Spec.Tolrenance_Negative = this.Spec.Tolrenance_Negative; |
| | | } |
| | | |
| | | this.KeyUnitCollection.ForEach(k => |
| | | { |
| | | mUnit.KeyUnitCollection.Add(k.Copy()); |
| | | }); |
| | | |
| | | return mUnit; |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | public void Dispose() |
| | | { |
| | | SpinWait wait = new SpinWait(); |
| | | while (ImageSaveStatus != 0) |
| | | { |
| | | wait.SpinOnce(); |
| | | Thread.Sleep(10); |
| | | } |
| | | |
| | | KeyImages?.ForEach(i => |
| | |
| | | if (valuePairs == null || valuePairs.Count == 0) |
| | | { |
| | | IsDone = false; |
| | | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("IsDone")); |
| | | return; |
| | | } |
| | | |
| | | foreach (KeyValuePair<string, double> pair in valuePairs) |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | public KeyUnitBind Copy() |
| | | { |
| | | KeyUnitBind clone = new KeyUnitBind(); |
| | | clone.Key = this.Key; |
| | | clone.KeyResultId = this.KeyResultId; |
| | | |
| | | this.MeasureValueDict.Keys.ToList().ForEach(k => |
| | | { |
| | | clone.MeasureValueDict[k] = null; |
| | | }); |
| | | |
| | | return clone; |
| | | } |
| | | } |
| | | |
| | | //public class NoticedDictionary<T1, T2> : Dictionary<T1, T2>, INotifyPropertyChanged |