示例#1
0
        private void CodeFilterInit(string name)
        {
            CodeFilterItemViewModel filter = CodeFilterDataGrid.SelectedValue as CodeFilterItemViewModel;

            if (filter == null)
            {
                return;
            }
            filter.FilterName = name;
            filter.FilterArgs = null;
            ShowFilterSettingView(filter);
        }
示例#2
0
        private void UpDown_ValueChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs <double?> e)
        {
            object row = CodeFilterDataGrid.SelectedItem;

            if (!(row is CodeFilterItemViewModel))
            {
                return;
            }
            //更新当前选择的
            CodeFilterItemViewModel filter = (CodeFilterItemViewModel)row;

            NumericUpDown[] upDowns = FilterArgsPanel.Children.Cast <UIElement>().OfType <NumericUpDown>().ToArray();
            filter.FilterArgs = upDowns.Length == 0 ? null : upDowns.Select(m => m.Value).ExpandAndToString();
        }
示例#3
0
        private byte[,] CodeFilter(byte[,] bytes, CodeFilterItemViewModel filter)
        {
            if (filter.FilterArgs == null)
            {
                return(bytes);
            }
            int[] args = filter.FilterArgs.Split(',').Select(m => m.CastTo <int>()).ToArray();
            switch (filter.FilterName)
            {
            case "Binaryzation":
                _code += $".Binaryzation({args[0]})";
                return(bytes.Binaryzation((byte)args[0]));

            case "DeepFore":
                _code += $".DeepFore({args[0]})";
                return(bytes.DeepFore((byte)args[0]));

            case "ClearNoiseRound":
                _code += $".ClearNoiseRound({args[0]}, {args[1]})";
                return(bytes.ClearNoiseRound((byte)args[0], args[1]));

            case "ClearNoiseArea":
                _code += $".ClearNoiseArea({args[0]}, {args[1]})";
                return(bytes.ClearNoiseArea((byte)args[0], args[1]));

            case "ClearBorder":
                _code += $".ClearBorder({args[0]})";
                return(bytes.ClearBorder(args[0]));

            case "AddBorder":
                _code += $".AddBorder({args[0]}, {args[1]})";
                return(bytes.AddBorder(args[0], (byte)args[1]));

            case "ClearGray":
                _code += $".ClearGray({args[0]},{args[1]})";
                return(bytes.ClearGray((byte)args[0], (byte)args[1]));

            case "ToValid":
                _code += $".ToValid({args[0]})";
                return(bytes.ToValid((byte)args[0]));
            }
            return(bytes);
        }
示例#4
0
        private void ShowFilterSettingView(CodeFilterItemViewModel filter)
        {
            string    name  = filter.FilterName;
            WrapPanel panel = FilterArgsPanel;

            panel.Children.Clear();
            string args = filter.FilterArgs;

            string[] strs;
            switch (name)
            {
            case "ToGrayArray2D":
                filter.FilterArgs = null;
                break;

            case "Binaryzation":
            case "DeepFore":
                AddNumericUpDown(panel, "灰度", filter.FilterArgs.CastTo(200));
                if (filter.FilterArgs == null)
                {
                    filter.FilterArgs = "200";
                }
                break;

            case "ClearNoiseRound":
                strs = (args ?? "200,3").Split(',');
                AddNumericUpDown(panel, "灰度", strs[0].CastTo(200));
                AddNumericUpDown(panel, "点数", strs[1].CastTo(3), 1, 4);
                if (filter.FilterArgs == null)
                {
                    filter.FilterArgs = "200,3";
                }
                break;

            case "ClearNoiseArea":
                strs = (args ?? "200,8").Split(',');
                AddNumericUpDown(panel, "灰度", strs[0].CastTo(200));
                AddNumericUpDown(panel, "面积", strs[1].CastTo(8), 1, 1000);
                if (filter.FilterArgs == null)
                {
                    filter.FilterArgs = "200,8";
                }
                break;

            case "ClearBorder":
                AddNumericUpDown(panel, "边宽", (args ?? "1").CastTo(1), 1, 100);
                if (filter.FilterArgs == null)
                {
                    filter.FilterArgs = "1";
                }
                break;

            case "AddBorder":
                strs = (args ?? "1,255").Split(',');
                AddNumericUpDown(panel, "边宽", strs[0].CastTo(1), 1, 100);
                AddNumericUpDown(panel, "灰度", strs[1].CastTo(255), 1, 100);
                if (filter.FilterArgs == null)
                {
                    filter.FilterArgs = "1,255";
                }
                break;

            case "ClearGray":
                strs = (args ?? "255,255").Split(',');
                AddNumericUpDown(panel, "小值", strs[0].CastTo(255));
                AddNumericUpDown(panel, "大值", strs[1].CastTo(255));
                if (filter.FilterArgs == null)
                {
                    filter.FilterArgs = "255,255";
                }
                break;

            case "ToValid":
                AddNumericUpDown(panel, "灰度", (args ?? "200").CastTo(1), 1, 100);
                if (filter.FilterArgs == null)
                {
                    filter.FilterArgs = "200";
                }
                break;
            }
        }