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

       }

   }

}

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

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


 

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

44014. Разработка электронного регистратора пульсовых колебаний 2.07 MB
  Мембрана изготовлена из тонколистовой бронзы толщиной около 003 мм. Катодами в ванне служат листы из меди или коррозионностойкой стали помещенные в чехлы из хлориновой ткани. Медная фольга защищается от возможных повреждений при хранении транспортировании и сверлении отверстий медным или алюминиевым листовым протектором толщиной 50 75 мкм. В наши дни весьма актуальна подготовка специалистов...
44015. Розробка програмного забезпечення спортивної статистики, соціальної мережі та веб-сервісу прийому замовлень для служб таксі 6.68 MB
  Розробка універсального алгоритму і програмного забезпечення для автоматичного підрахунку фізичних вправ і ведення спортивної статистики, створення відповідної соціальної мережі, здатної витримувати високі навантаження на ресурси (більше 1000 запитів за секунду). Розробка веб-сервісу прийому замовлень для служб таксі
44017. Комплекс лабораторних робіт з предмета: «Антенно- фідерні пристрої» 409.47 KB
  Вплив на людину джерел електромагнітного випромінювання Оптичне випромінювання. Функції антен у зазначених системах зводяться до випромінювання або прийому електромагнітних хвиль. Основні вимоги до фідера зводяться до його електрогерметічності відсутності випромінювання енергії з фідера і малим тепловим втратам.
44018. WEB – орієнтована інформаційна система «Math» 1.47 MB
  До цих джерел шуму відносяться також залізничні вузли і станції великі автовокзали і автогосподарства мотелі і кемпінги трейлерні парки промислові об'єкти і великі бази будівельної індустрії енергетичні установки. Це і проблема могильників і проблема саркофагу який поступово руйнується проблема населення яке все ще проживає в тридцяти кілометровій зоні. Арк. Підпис Дата Арк.
44019. Место ангиографической аппаратуры в решении задач улучшения диагностической помощи населению и принцип получения ангиограмм 1.24 MB
  Требования к техническим средствам ангиографического комплекса и принцип комплектования аппаратуры. Питающее устройство ангиографического аппарата. Штативные устройства ангиографического комплекса. Назначение и устройство стола координат ангиографического комплекса.
44020. СПЕЦИФІКА АНГЛІЙСЬКОЇ ІНТЕРНЕТ-РЕКЛАМИ, ЇЇ КОГНІТИВНИЙ АСПЕКТ 2.14 MB
  Англійська Інтернет-реклама – є новим видом розповсюдження інформації. Сучасні англійські інформаційні та телекомунікаційні рекламні технології істотно змінюють не тільки спосіб виробництва продуктів і послуг, але й організацію, форми проведення дозвілля, реалізацію людиною своїх громадянських прав методи і форми виховання освіти. Англійська Інтернет-реклама має вирішальний вплив на соціальну структуру суспільства, економіку, політику та розвиток різних суспільних інститутів.
44021. Емпіричне дослідження впливу потреб на професійний вибір підлітків 545.5 KB
  Підходи до визначення поняття потреби. потреба є психічним явищем відображення обєктивної нужди у чомусь організму біологічні потреби та особистості соціальні потреби. Поява нової потреби заставляє дитину проявляти для досягнення цього стану активність в ході якої і відбувається розвиток. При задоволенні потреби людина досягає стану спокою.
44022. Контактная разность потенциалов 99 KB
  Наиболее важно понятие контактной разности потенциалов для твёрдых проводников металлов и полупроводников. В конечном счёте достигается равновесие при котором потоки электронов в обоих направлениях становятся одинаковыми и между проводниками устанавливается контактная разность потенциалов Значение контактной разности потенциалов равно разности работ выхода отнесённой к заряду электрона. Если составить электрическую цепь из нескольких проводников то контактная разность потенциалов между крайними проводниками определяется только их...