Отрисовка изображения попиксельно из бинарного файла - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Очень нужна ваша помощь, мучаюсь с этой отрисовкой уже не первый день - всё не так срабатывает. Имеется текстовый файл, в котором черно-белая картинка представлена нулями и единицами (приведен во вложении). Нужно считать этот файл и отрисовать его в переменную структуры Bitmap, которая потом выводится в picturebox. Я пробовал это сделать вот так:
Листинг программы
  1. using (StreamReader sr = File.OpenText(@"C:\Users\admin\Desktop\тест.txt"))
  2. {
  3. while (sr.Peek() != -1)
  4. {
  5. for (int y = 0; y < height; y++)
  6. {
  7. for (int x = 0; x < height; x++)
  8. {
  9. char c = (char)sr.Read();
  10. if (c == '0')
  11. image.SetPixel(x, y, Color.White);
  12. else if (c == '1')
  13. image.SetPixel(x, y, Color.Black);
  14. }
  15. }
  16. }
  17. }
Но в этом случае оно перекашивает картинку каким-то непонятным образом. Пробовал использовать SetPixel ещё по-разному, через матрицу и пр., но в остальных случаях он её отрисовывает как-то наполовину.

Решение задачи: «Отрисовка изображения попиксельно из бинарного файла»

textual
Листинг программы
  1. using System;
  2. using System.ComponentModel;
  3. using System.Drawing;
  4. using System.IO;
  5. using System.Windows.Forms;
  6.  
  7. namespace WindowsFormsApplication339
  8. {
  9.     public partial class Form1 : Form
  10.     {
  11.         public Form1()
  12.         {
  13.             InitializeComponent();
  14.  
  15.             BackgroundImage = GetBitmap("c:\\test.txt");
  16.             BackgroundImageLayout = ImageLayout.Center;
  17.         }
  18.  
  19.         Bitmap GetBitmap(string filePath)
  20.         {
  21.             var lines = File.ReadAllLines(filePath);
  22.             var res = new Bitmap(lines[0].Length, lines.Length);
  23.             for (int y = 0; y < res.Height; y++)
  24.             for (int x = 0; x < res.Width; x++)
  25.                 res.SetPixel(x, y, lines[y][x] == '1' ? Color.White : Color.Black);
  26.  
  27.             return res;
  28.         }
  29.     }
  30. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы