/// <summary> /// 创建矩阵后操作GUI /// </summary> private void create_matrix() { if (auto_R_Button.IsChecked == true) { hill = new Algorithm.Hill(Convert.ToInt32(input_level.Text)); } else { hill = new Algorithm.Hill(Convert.ToInt32(input_level.Text), Algorithm.Hill.getNewMatrix(Convert.ToInt32(input_level.Text))); } clear_matrix(); for (int i = 0; i < hill.Level; ++i) { RowDefinition rd1 = new RowDefinition(); ColumnDefinition cd1 = new ColumnDefinition(); matrix_grid.RowDefinitions.Add(rd1); matrix_grid.ColumnDefinitions.Add(cd1); RowDefinition rd2 = new RowDefinition(); ColumnDefinition cd2 = new ColumnDefinition(); inverse_matrix_grid.RowDefinitions.Add(rd2); inverse_matrix_grid.ColumnDefinitions.Add(cd2); } for (int i = 0; i < hill.Level; ++i) { for (int j = 0; j < hill.Level; ++j) { TextBox item_matrix = new TextBox(); item_matrix.SetValue(Grid.RowProperty, i); item_matrix.SetValue(Grid.ColumnProperty, j); item_matrix.Foreground = new SolidColorBrush(Colors.White); //item_matrix.FontSize = 24; item_matrix.SetValue(TextBox.HorizontalAlignmentProperty, HorizontalAlignment.Center); item_matrix.SetValue(TextBox.VerticalAlignmentProperty, VerticalAlignment.Center); item_matrix.Background = new SolidColorBrush(Colors.Transparent); if (manual_R_Button.IsChecked == true) { times_create_matrix.Text = "请输入矩阵"; item_matrix.BorderThickness = new Thickness(1); } else { // 自动模式下只读 item_matrix.IsReadOnly = true; item_matrix.Text = hill.Matrix[i][j].ToString(); item_matrix.BorderThickness = new Thickness(0); times_create_matrix.Text = "矩阵次数:" + hill.Times; create_inverse_matrix(); } matrix_grid.Children.Add(item_matrix); } } }
private void recreate_matrix_Click(object sender, RoutedEventArgs e) { if (auto_R_Button.IsChecked == true) { create_matrix(); transform(); } else { int level = Convert.ToInt32(input_level.Text); long[][] input_matrix = Algorithm.Hill.getNewMatrix(level); foreach (TextBox tb in matrix_grid.Children) { int i = (int)tb.GetValue(Grid.RowProperty); int j = (int)tb.GetValue(Grid.ColumnProperty); input_matrix[i][j] = (Convert.ToInt32(tb.Text)); } hill = new Algorithm.Hill(level, input_matrix); create_inverse_matrix(); transform(); } }