Как я могу отображать изображения в моих сгенерированных кнопках?
Я работаю над игрой winform, чтобы просто ознакомиться с тем, как все работает. Мне удалось создать кнопки на основе пользовательского ввода ( которые будут отображаться как x количество строк и x количество столбцов). Я сохранил его в виде чисел (0 будет пустой кнопкой, 1 будет моим персонажем, а 2 - стеной)
Текстовые файлы выглядят следующим образом:
3,3 ---> количество строк и столбцов
2 -
2 - Эти три 2s будут изображениями стен для первой колонки
2 -
0 ->
1 -> 010 будет отображаться в среднем ряду в виде двух пустых кнопок с каждой стороны и
0 -> символ посередине
2
2
2
Итак, когда я загружаю это, я могу сгенерировать в общей сложности 9 плиток, но все они кажутся пустыми, как я могу заставить их загружаться с соответствующими изображениями?
Как я открываю и восстанавливаю текстовый файл и мой переключатель для моих изображений
private void openButton_Click(object sender, EventArgs e) { OpenFileDialog ofg = new OpenFileDialog(); ofg.Filter = "Game File(*.game)|*.game"; if (ofg.ShowDialog() == DialogResult.OK) { using (StreamReader sr = new StreamReader(ofg.FileName)) { var intLines = File.ReadAllLines(ofg.FileName); var rowsCols = intLines[0].Split(','); int.TryParse(rowsCols[0], out rows); int.TryParse(rowsCols[1], out cols); var line = 1; for (int row = 0; row < rows; row++) { for (int col = 0; col < cols; col++) { var tileMap = Tile.Parse(intLines[line++], row, col); tileMap.Width = tileWidth; tileMap.Height = tileHeight; tileMap.Left = col * tileWidth; tileMap.Top = row * tileHeight; pnlBoard.Controls.Add(tileMap); } } } } } private void tile_Click(object sender, EventArgs e) { Tile tile = (Tile)sender; tile.Type = (TileType)selectedTool; switch (selectedTool) { case 0: tile.Image = null; tile.Tag = 0; break; case 1: tile.Image = Properties.Resources.Char; tile.Tag = 1; break; case 2: tile.Image = Properties.Resources.Wall; tile.Tag = 2; break; } selectedTool = (int)tile.Tag; }
Что я уже пробовал:
Теперь я попытался создать отдельный/другой метод, но я просто заблудился ( я новичок с c# и использую winforms, поэтому я просто очень запутался).
Метод, который я попытался создать, был:
public static Image GetTypeImage(Type imageType) { switch (selectedTool) { case 0: tile.Image = null; tile.Tag = 0; break; case 1: tile.Image = Properties.Resources.Char; tile.Tag = 1; break; case 2: tile.Image = Properties.Resources.Wall; tile.Tag = 2; break; } selectedTool = (int)tile.Tag; //I was unsure how to proceed from here },
Затем я попытался вызвать метод в своем цикле, используя
Tile.Image = GetTypeImage(Tile.Type);
Извините за длину и беспорядочный код, я все еще пытаюсь привыкнуть к c# и нахожу его довольно неприятным, пытаясь понять, как это сделать ( хотя я чувствую, что слишком много думаю об этом, я не совсем уверен). Спасибо.