Рисование BMP-картинки по пикселям - C#
Формулировка задачи:
Добрый день!
получил задание нарисовать BMP-картинку, используя стандартную структуру BMP-файла и команду SetPixel. Программу написал, вывожу картинку в pixtureBox на форме. Проблема в том, что картинка выводится не в том виде, как в оргинале. У меня подозрение на 2 ошибки:
1) неправильно задана структура палитры
Дело в том, что в источниках по структуре палитра задается 4-хбитными параметрами, а byte - 8 бит. Но если задать Int32, то цвета выдаются 4-5 значными числами. А нужно не больше 3 знаков.
2) в команде
неправлиьно рисуется пиксель.
Если необходим весь код программы, пишите.
public struct bmpRGB // Палитра { public byte rgbBlue; public byte rgbGreen; public byte rgbRed; public byte rgbReserved; } //bmpRGB
myPicBox.SetPixel(x, bmpFI.biHeight - y - 1, Color.FromArgb(255, buffRGB.rgbRed, buffRGB.rgbGreen, buffRGB.rgbBlue));
Решение задачи: «Рисование BMP-картинки по пикселям»
textual
Листинг программы
// Считываем Палитру и выводим на экран fs.Seek(bmpFH.bmpOfBits, SeekOrigin.Begin); var myPicBox = new Bitmap(pictureBox1.Width, pictureBox1.Height); for (int y = 0; y < bmpFI.biHeight; y++) for (int x = 0; x < bmpFI.biWidth; x++) { var buffRGB = ReadStruct<BmpRGB>(fs); myPicBox.SetPixel(x, bmpFI.biHeight - y - 1, Color.FromArgb(255, buffRGB.rgbRed, buffRGB.rgbGreen, buffRGB.rgbBlue)); } // pictureBox1.Image = myPicBox;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д