private void CodeFilterInit(string name) { CodeFilterItemViewModel filter = CodeFilterDataGrid.SelectedValue as CodeFilterItemViewModel; if (filter == null) { return; } filter.FilterName = name; filter.FilterArgs = null; ShowFilterSettingView(filter); }
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(); }
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); }
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; } }