Отрисовка изображения попиксельно из бинарного файла - C#
Формулировка задачи:
Здравствуйте! Очень нужна ваша помощь, мучаюсь с этой отрисовкой уже не первый день - всё не так срабатывает.
Имеется текстовый файл, в котором черно-белая картинка представлена нулями и единицами (приведен во вложении). Нужно считать этот файл и отрисовать его в переменную структуры Bitmap, которая потом выводится в picturebox.
Я пробовал это сделать вот так:
Но в этом случае оно перекашивает картинку каким-то непонятным образом. Пробовал использовать SetPixel ещё по-разному, через матрицу и пр., но в остальных случаях он её отрисовывает как-то наполовину.
Листинг программы
- using (StreamReader sr = File.OpenText(@"C:\Users\admin\Desktop\тест.txt"))
- {
- while (sr.Peek() != -1)
- {
- for (int y = 0; y < height; y++)
- {
- for (int x = 0; x < height; x++)
- {
- char c = (char)sr.Read();
- if (c == '0')
- image.SetPixel(x, y, Color.White);
- else if (c == '1')
- image.SetPixel(x, y, Color.Black);
- }
- }
- }
- }
Решение задачи: «Отрисовка изображения попиксельно из бинарного файла»
textual
Листинг программы
- using System;
- using System.ComponentModel;
- using System.Drawing;
- using System.IO;
- using System.Windows.Forms;
- namespace WindowsFormsApplication339
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- BackgroundImage = GetBitmap("c:\\test.txt");
- BackgroundImageLayout = ImageLayout.Center;
- }
- Bitmap GetBitmap(string filePath)
- {
- var lines = File.ReadAllLines(filePath);
- var res = new Bitmap(lines[0].Length, lines.Length);
- for (int y = 0; y < res.Height; y++)
- for (int x = 0; x < res.Width; x++)
- res.SetPixel(x, y, lines[y][x] == '1' ? Color.White : Color.Black);
- return res;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д