private void ApplyValue(TrackBarRange value)
        {
            RepositoryItemRangeTrackBar properties = rangeTrackBarControl1.Properties;

            properties.Minimum          = Math.Min(properties.Minimum, value.Minimum);
            properties.Maximum          = Math.Max(properties.Maximum, value.Maximum);
            rangeTrackBarControl1.Value = value;
        }
Пример #2
0
        public static TrackBarRange StringToTrackBarRange(string value)
        {
            TrackBarRange result = TrackBarRange.Empty;

            string[] values = value.Split(',');
            if (values.Length == 2)
            {
                int min = Convert.ToInt32(values[0]);
                int max = Convert.ToInt32(values[1]);
                result = new TrackBarRange(min, max);
            }
            return(result);
        }
        private void OnQueryPopup(object sender, CancelEventArgs e)
        {
            TrackBarRange value = ValuesConverter.StringToTrackBarRange((sender as PopupContainerEdit).Text);

            if (value.IsEmpty)
            {
                e.Cancel = true;
            }
            else
            {
                ApplyValue(value);
            }
        }
        private void TrackBarEditValueChanged(object sender, EventArgs e)
        {
            var           obj = (RangeTrackBarControl)sender;
            TrackBarRange val = obj.Value;

            if (val.Minimum == val.Maximum)
            {
                if (val.Minimum > 0)
                {
                    val.Minimum -= 1;
                }
                else
                {
                    val.Maximum += 1;
                }
            }

            obj.Value = val;
        }
Пример #5
0
        public static void SetRangeLabel(
            RangeTrackBarControl bar,
            string label,
            LabelControl labelCtl)
        {
            TrackBarRange r   = bar.Value;
            string        txt = "";

            txt += r.Minimum.ToString();
            if (r.Maximum != r.Minimum)
            {
                txt += "-" + r.Maximum;
            }
            if (Lex.IsDefined(label))
            {
                txt += "  " + label;
            }
            labelCtl.Text = txt;
            return;
        }
Пример #6
0
 public static string TrackBarRangeToString(TrackBarRange range)
 {
     return(string.Format("{0},{1}", range.Minimum, range.Maximum));
 }
Пример #7
0
        void   Up_textChanged(object sender, EventArgs e)
        {
            if (!image.IsInitialized() || Runflag2 || RunFlag3)
            {
                return;
            }
            RunFlag = true;
            NumericUpDown numericUpDown = (NumericUpDown)sender;

            if (numericUpDown.Name == "numericUpDown1" || numericUpDown.Name == "numericUpDown2")
            {
                //全局阈值分割
                setting.LocalOrGlobal = false;
                int low  = (int)numericUpDown1.Value;
                int high = (int)numericUpDown2.Value;
                if (low >= high)
                {
                    //MessageBox.Show("最小阈值设置不能大于最大阈值设置!");
                    return;
                }
                else
                {
                    setting.minThreshold = low;
                    setting.maxThreshold = high;
                    TrackBarRange range = new TrackBarRange(0, 255);
                    range.Minimum = low; range.Maximum = high;
                    rangeTrackBarControl1.Value = range;

                    HObject Region = new HObject();
                    Region.Dispose();
                    string Error = RunThreshold(image, out Region);

                    if (window != null && Error == "OK")
                    {
                        HOperatorSet.SetColor(window.HWindowHalconID, "red");
                        HOperatorSet.DispObj(Region, window.HWindowHalconID);
                    }
                    else
                    {
                        MessageBox.Show(Error);
                    }
                }
            }
            else //本地阈值
            {
                int width  = (int)numericUpDown3.Value;
                int high   = (int)numericUpDown4.Value;
                int offset = (int)numericUpDown5.Value;
                trackBarControl1.Value = width;
                trackBarControl2.Value = high;
                trackBarControl3.Value = offset;
                HObject Region = new HObject();
                Region.Dispose();
                setting.maskWith        = width; setting.maskHeight = high;
                setting.LocalOrGlobal   = true;
                setting.thresholdOffset = offset;
                string Error = RunThreshold(image, out Region);
                if (window != null && Error == "OK")
                {
                    HOperatorSet.SetColor(window.HWindowHalconID, "red");
                    HOperatorSet.DispObj(Region, window.HWindowHalconID);
                }
                else
                {
                    MessageBox.Show(Error);
                }
            }
            RunFlag = false;
        }
Пример #8
0
        public void Setup(ColumnInfo colInfo)
        {
            InSetup = true;

            ColInfo = colInfo;             // save ref to colInfo
            QueryColumn qc = colInfo.Qc;

            Stats = colInfo.Rfld.GetStats();
            RangeFilter.Properties.Minimum = 0;
            RangeFilter.Properties.Maximum = Stats.DistinctValueList.Count - 1;

            ParsedSingleCriteria psc = MqlUtil.ParseSingleCriteria(ColInfo.Qc.SecondaryCriteria);             // parse criteria

            TrackBarRange tbr = new TrackBarRange(0, Stats.DistinctValueList.Count - 1);

            RangeFilter.Value = tbr;

            if (psc != null && psc.OpEnum == CompareOp.Between && Stats.DistinctValueList.Count > 0)             // setup prev value
            {
                MetaColumnType type    = ColInfo.Mc.DataType;
                MobiusDataType lowVal  = MobiusDataType.New(type, psc.Value);
                MobiusDataType highVal = MobiusDataType.New(type, psc.Value2);
                if (MetaColumn.IsDecimalMetaColumnType(type))
                {                 // adjust decimal comparison values by an epsilon
                    double e = MobiusDataType.GetEpsilon(Stats.MaxValue.FormattedText);
                    lowVal.NumericValue  += e;
                    highVal.NumericValue -= e;
                }

                int lowPos = -1;
                for (int i1 = 0; i1 < Stats.DistinctValueList.Count; i1++)
                {
                    MobiusDataType mdt  = Stats.DistinctValueList[i1];
                    string         fTxt = mdt.FormattedText;

                    if (mdt.CompareTo(lowVal) <= 0 || Lex.Eq(fTxt, psc.Value))
                    {
                        lowPos = i1;
                    }
                    else
                    {
                        break;
                    }
                }

                int highPos = -1;
                for (int i1 = Stats.DistinctValueList.Count - 1; i1 >= 0; i1--)
                {
                    MobiusDataType mdt  = Stats.DistinctValueList[i1];
                    string         fTxt = mdt.FormattedText;

                    if (mdt.CompareTo(highVal) >= 0 || Lex.Eq(fTxt, psc.Value2))
                    {
                        highPos = i1;
                    }
                    else
                    {
                        break;
                    }
                }

                if (lowPos >= 0 && highPos >= 0)
                {
                    tbr = new TrackBarRange(lowPos, highPos);
                    RangeFilter.Value = tbr;
                }
            }

            UpdateLabels();

            RangeFilter.Focus();
            InSetup = false;
            return;
        }