public void VisualizeSolution(IMatrix <int> matrix, ISolution solution) { var text = new StringBuilder(); var splitted = new SplittedMatrix(matrix, solution); var index = new Index2D(); for (int i = 0; i < splitted.Size(0); i++) //строка разбитой матрицы { if (i != 0) { text.AppendLine(); } for (index.I = splitted.CellLow(i, 0); index.I <= splitted.CellHigh(i, 0); index.I++) //строка исходной матрицы, попавшая в строку разбитой матрицы { for (int j = 0; j < splitted.Size(1); j++) //столбец разбитой матрицы { if (j != 0) { text.AppendFormat(" "); } for (index.J = splitted.CellLow(j, 1); index.J <= splitted.CellHigh(j, 1); index.J++) //столбец исходной матрицы, попавший в столбец разбитой матрицы { text.AppendFormat("{0,3} ", matrix[index]); } } text.AppendLine(); } } MessageBox.Show(text.ToString()); }
protected override void SetBitmap() { for (int i = 0; i < solutionSizeColumn; i++) //строка разбитой матрицы { var lastOnI = splittedMatrix.CellHigh(i, 0); var index = new Index2D(); //строка исходной матрицы, попавшая в строку разбитой матрицы for (index.I = splittedMatrix.CellLow(i, 0); index.I <= lastOnI; index.I++) { for (int j = 0; j < solutionSizeRow; j++) //столбец разбитой матрицы { var lastOnJ = splittedMatrix.CellHigh(j, 1); //строка исходной матрицы, попавшая в столбец разбитой матрицы for (index.J = splittedMatrix.CellLow(j, 1); index.J <= lastOnJ; index.J++) { SetPixelToBitmapOfMatrix( (int)(coefficient * GetValueOfMatrixFrom(matrix[index])), index.I + i * zoomShift, index.J + j * zoomShift); } } } } }