14753

ИЗУЧЕНИЕ ПРЕДСТАВЛЕНИЯ ГРАФИЧЕСКОЙ ИНФОРМАЦИИ В WINDOWS

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная лабота №1 Изучение представления графической информации в Windows Цель работы: Написать программу реализующую просмотр графического файла формат BMP. Программа должна: загружать и выводить на экран произвольный файл с использованием файловых функ

Русский

2013-06-09

144.25 KB

1 чел.

Лабораторная лабота №1

"Изучение представления графической информации в Windows"

Цель работы:

Написать программу, реализующую просмотр графического файла (формат BMP). Программа должна:

  1.  загружать и выводить на экран произвольный файл (с использованием файловых функций);
  2.  читать файлы с цветовой палитрой в 256 цветов;
  3.  выводить информацию из заголовков файла (тип, размер, разрешение, использование сжатия, к-во цветов, ...), а также цветовую палитру;

Код программы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;

namespace lab1

{

   public partial class Form1 : Form

   {

       public string path;        public int scale;

       public byte r, g, b;        public int[,] palette = new int[256, 3];

       public Form1()

       {

           InitializeComponent();

           listView1.Hide();

       }

       private void open256bitmapToolStripMenuItem_Click(object sender, EventArgs e)

       {

           OpenFileDialog dialog = new OpenFileDialog();

           dialog.Filter = "bmp | *.bmp";

           if (dialog.ShowDialog() == DialogResult.OK)

           {

               this.path = dialog.FileName;

               Show_Pic(this.path);

           }

       }

       public void Show_Pic(string filename)

       {

           byte[] array2 = new byte[2];

           byte[] array4 = new byte[4];

           byte[] array3 = new byte[3];

           byte[] values = new byte[3];

           FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);

           fs.Seek(2, SeekOrigin.Begin); fs.Read(array4, 0, 4);

           int filesize = BitConverter.ToInt32(array4, 0);

           fs.Seek(10, SeekOrigin.Begin); fs.Read(array4, 0, 4);

           int rasterlocation = BitConverter.ToInt32(array4, 0);

           fs.Seek(18, SeekOrigin.Begin); fs.Read(array4, 0, 4);

           int width = BitConverter.ToInt32(array4, 0);

           fs.Read(array4, 0, 4);

           int height = BitConverter.ToInt32(array4, 0);

           fs.Read(array2, 0, 2);

           int numofcolorflats = BitConverter.ToInt16(array2, 0);

           fs.Read(array2, 0, 2);

           int bitperpix = BitConverter.ToInt16(array2, 0);

           fs.Seek(46, SeekOrigin.Begin); fs.Read(array4, 0, 4);

           int numofcolors = BitConverter.ToInt32(array4, 0);

           fs.Read(array4, 0, 4);

           int numofmaincolors = BitConverter.ToInt32(array4, 0);

           fs.Seek(54, SeekOrigin.Begin);

           long pos = fs.Position;

           for (int i = 0; pos + 4 < rasterlocation; i++)

               {

                   pos = fs.Position;

                   fs.Read(values, 0, 3);

                   palette[i, 0] = values[2];

                   palette[i, 1] = values[1];

                   palette[i, 2] = values[0];

                   fs.Seek(1, SeekOrigin.Current);

               }

           fs.Seek(rasterlocation, SeekOrigin.Begin);

           Bitmap bmp1 = new Bitmap((int)width, (int)height);

           for (int y = bmp1.Height - 1; y >= 0 ; y--)

               for (int x = 0; x < bmp1.Width; x++)

               {

                   int a = Convert.ToInt32(fs.ReadByte());

                  bmp1.SetPixel(x, y, Color.FromArgb(palette[a, 0],

                       palette[a, 1], palette[a, 2]));

               }

           pictureBox1.Image = bmp1;

           string msg1 = "raster data location is " + rasterlocation.ToString() +

                           "\nwidth = " + width.ToString() +

                           "\nheight = " + height.ToString() +

                           "\nfile size = " + filesize.ToString() + " bytes" +

                           "\nnumber of color flats = " + numofcolorflats.ToString() +

                           "\nbit per pixel = " + bitperpix.ToString() +

                           "\nnumber of colors = " + numofcolors.ToString() +

                           "\nnumber of main colors = " + numofmaincolors.ToString();

           MessageBox.Show(msg1);

       }

       private void showPaliterToolStripMenuItem_Click(object sender, EventArgs e)

       {

           pictureBox1.Visible = false;

           int cc = 0;

           while (cc < 256)

           {

               listView1.Items.Add("    ");

               listView1.Items[cc].BackColor = Color.FromArgb(palette[cc, 0], palette[cc, 1], palette[cc, 2]);

               cc++;

           }

           listView1.Show();

       }

       private void hidePaletteToolStripMenuItem_Click(object sender, EventArgs e)

       {

           pictureBox1.Visible = true;

           listView1.Hide();

       }

   }

}

Результаты работы:

Вывод: мы научились попиксельно загружать битмап, изучили устройство битмапа.


 

А также другие работы, которые могут Вас заинтересовать

14227. Концертная форма эпохи барокко 28.5 KB
  Лекция одиннадцатая. Тема: концертная форма эпохи барокко. Занимает центральное место в эпохе. Концертная форма встречается в крайних частях. Барокко эпоха концертирующего стиля т.е. идея чередования тутти и соло. Эта идея встречается и в других формах. Статья: Х
14228. Бах. Бранденбургский концерт №4 24 KB
  Лекция двенадцатая. Тема: Бах. Бранденбургский концерт №4. Первая часть. Скрипка и две флейты оркестр традиционный струнный с чембало. Ядро 6 тактов. Первый каденционный участок в начале 23 такта. 57 такт проведение в Соль мажоре. 83 такт завершение темы соло ...
14229. Бах. Бранденбургский концерт № 3 23 KB
  Лекция пятнадцатая. Тема: Бах. Бранденбургский концерт № 3. Третья часть Двухчастная форма TD – первая часть DT – вторая часть Ядро двутактовое и развертывание Ядро в G 17 такт – ядро в e 20 такт – ядро в h 37 такт – ядро в С потом – в G As и h II ХТ...
14230. Александр Сергеевич Даргомыжский (1813-1869) 15.1 KB
  Александр Сергеевич Даргомыжский 1813-1869 Его творчество новый этап в развитии музыки. Продолжатель дела Глинки; новатор; открыватель новых путей неохваченных Глинкой. Был критическим реалистом и главной темой были представители низших сословий и их жизнь. В 1835 год...
14231. Музыкальная ритмика 21.05 KB
  Музыкальная ритмика представлена в качестве приема работы по формированию и коррекции произносительной стороны речи слабослышащих детей. Цели которые определяют основные направления в занятиях по музыкальной ритмике заключаются в том чтобы: соединить работу
14232. Музыкальное искусство средневековья 23.73 KB
  Музыкальное искусство средневековья. Урсу Полина ДВЭ2 Средневековье – большая эпоха человеческой истории время господства феодального строя. Периодизация культуры: Раннее Средневековье – V X вв. Зрелое Средневековье – XI – XIV вв. В 395 г. Римская империя расп
14233. Музыкальный и литературный ряд на уроках изобразительного искусства 17.87 KB
  Конспект занятия по Методике преподавания изобразительного искусства в школе. Тема: Музыкальный и литературный ряд на уроках изобразительного искусства. Задачи: Знакомство с основными целями и задачами использования музыкального и литературного ряда на уроках ...
14234. Музыкальный импрессионизм и творчество Дебюсси 15.43 KB
  Музыкальный импрессионизм и творчество Дебюсси 1 Дебюсси вывел франц. музыку в лидеры Париж музыкальный центр. 2 Дебюсси основоположник антиромантизма отсутствие тем исповедальности борьбы одинокого героя отсутствие автобиографичности 3 Дебюсси первы...
14235. Музыкальный стиль 37.71 KB
  Музыкальный стиль Содержание Введение Становление понятия стильного исполнения Исполнительский стиль Пианист ХХI века: к новой духовности исполнителя Заключение Список литературы Введение Музыкальный стиль понимаемый в виде истор...