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();

       }

   }

}

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

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


 

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

78919. Социокультурное и гуманитарное содержание понятие жизни 26.5 KB
  Все его творения происходят из неспособности создать привычными средствами жизни и на основе ее эволюционных законов живое существо которое превосходило бы человека. Шелер называет странной пессимистичной ложной оказывается однако логически строго последовательной если по объяснению автора разделять дух соответственно разум и жизнь как два метафизических начала но при этом отождествлять дух с техническим интеллектом интеллектом лишенным мудрости а ценности жизни делать высшими ценностями. Фазы...
78920. История как одна из форм проявления жизни 28.5 KB
  История как одна из форм проявления жизни. Фазы развития этой болезни жизни которая зовется человеком в структурном отношении те же самые какие проходят все стареющие и умирающие существа: прогрессирующее преодоление жизненной силы посредством автономизации механизмов которые сам организм высвобождает из себя по мере старения. История общества по Зиммелю есть история нарастающей интеллектуализации рационализации социальной жизни и углубления влияния принципов денежных отношений. Анализу этих форм Зиммель посветил книгу Философия...
78921. Пространство и время в социогуманитарном познании 30.5 KB
  Пространство и время в социогуманитарном познании. Время и пространство важнейшие онтологические характеристики которые являются конституирующими элементами любой картины мира. В классической теории познания сложившейся под влиянием естественнонаучного знания время рассматривалось как форма протекания всех механических органических и психических процессов условие движения изменения и развития будь то пространственное перемещение качественное изменение возникновение или гибель. Такое время объективный параметр процессуальности ...
78922. Понятие хронотипа и его роль в СГН 29 KB
  Культурнохудожественный хронотоп как единство художественного пространствавремени впервые концептуально и методологически раскрыл М. Ядром этих моделей и становится континуум пространствавремени. Время здесь сгущается уплотняется становится художественно зримым; пространство же интенсифицируется втягивается в движение времени сюжета истории. Приметы времени раскрываются в пространстве и пространство осмысливается и измеряется временем.
78923. Коммуникативность как условие создания СГЗ 28.5 KB
  Отдельный ученый индивидуальный субъект познания как правило включен в состав научного коллектива лаборатории кафедры института научного кружка или школы. Общение в формах сотрудничества соавторства и конкуренции научного руководства и ученичества преследует цели достижения взаимопонимания между учеными и в итоге обеспечивает достижение конечного результата получение нового знания. В процессе коммуникации ученых обществоведов и гуманитариев обеспечивается: а социализация молодых ученых усвоение и передача накопленного...
78924. Моральная ответственность за введение научных конвенций 31.5 KB
  Моральная ответственность за введение научных конвенций. Социальный характер конвенций в общественных и гуманитарных науках пытаются обосновать различными способами: посредством их связи с идеалами нормами и оценками имеющими социальное происхождение К. Социальный характер таких конвенций проявляется также в ответственности ученого за их введение изменение или отказ от них. Подробнее специфика конвенций социальногуманитарных наук раскрыта в работах К.
78925. Рациональное, объективное, истинное в СГН 32 KB
  При рассмотрении проблемы истины важно уяснить специфику ее классической неклассической и постнеклассической трактовки а также особенности современного понимания ряда частных вопросов: ситуативность и объективный характер истин социальногуманитарных наук; их взаимосвязь с социальной реальностью; экзистенциальноантропологический подход к истине в гуманитарном знании. Вследствие этого а также вследствие традиций и особенностей каждой из наук они могут пользоваться преимущественно классической неклассической или постнеклассической...
78926. Природа и типы объяснений в СГН 27 KB
  Объяснение логикометодологическая процедура экспликации сущности одного явления через другое имеющее статус достоверного очевидного. Научное объяснение должно отвечать двум требованиям: 1 адекватности его аргументы и характеристики должны иметь непосредственное отношение к предметам явлениям событиям которые они объясняют; 2 принципиальной проверяемости непосредственно или через следствия. По своей логической структуре объяснение представляет рассуждение или умозаключение посылки которого содержат информацию необходимую для...
78927. Объяснение и понимание в СГН 32.5 KB
  Объяснение и понимание в СГН. Объяснение логикометодологическая процедура экспликации сущности одного явления через другое имеющее статус достоверного очевидного. Научное объяснение должно отвечать двум требованиям: 1 адекватности его аргументы и характеристики должны иметь непосредственное отношение к предметам явлениям событиям которые они объясняют; 2 принципиальной проверяемости непосредственно или через следствия. По своей логической структуре объяснение представляет рассуждение или умозаключение посылки которого содержат...