GeoSELECT.ru



Программирование / Реферат: Виды магнитных дисковых накопителей (Программирование)

Космонавтика
Уфология
Авиация
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Аудит
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника
Бухгалтерский учет
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Инвестиции
Иностранные языки
Информатика
Искусство и культура
Исторические личности
История
Кибернетика
Коммуникации и связь
Компьютеры
Косметология
Криминалистика
Криминология
Криптология
Кулинария
Культурология
Литература
Литература : зарубежная
Литература : русская
Логика
Логистика
Маркетинг
Масс-медиа и реклама
Математика
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Мифология
Москвоведение
Музыка
Муниципальное право
Налоги
Начертательная геометрия
Оккультизм
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование
Психология
Радиоэлектроника
Религия
Риторика
Сельское хозяйство
Социология
Спорт
Статистика
Страхование
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Физика
Физкультура
Философия
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
   

Реферат: Виды магнитных дисковых накопителей (Программирование)



МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ставропольский технологический институт сервиса
Филиал ЮРГУЭС



Контрольная работа



тема___________________________________________________________________
_______________________________________________________________________
_______________________________________________________________________
по дисциплине Информатика



Выполнила студентка группы ИСТ 031 ЗУ _______________ «
»
Проверил к. т. н., доцент _______________ «
»



Ставрополь 2003



Содержание.


| |3 |
|Введение..............................................| |
|.................................................. | |
|1. Виды магнитных дисковых |4-5 |
|накопителей......................................... | |
|2. Накопители на гибких магнитных дисках |6-7 |
|....................................... | |
|3. Накопители на жестких магнитных дисках |8-10 |
|..................................... | |
| |11 |
|Заключение............................................| |
|................................................ | |
| Используемые источники |12 |
|информации............................................| |
|.. | |



Введение.


Выпускаемые накопители информации представляют собой гамму запоминающих
устройств с различным принципом действия физическими и технически
эксплуатационными характеристиками. Основным свойством и назначением
накопителей информации является ее хранение и воспроизведение. Запоминающие
устройства принято делить на виды и категории в связи с их принципами
функционирования, эксплуатационно-техническими, физическими, программными и
др. характеристиками. Так, например, по принципам функционирования
различают следующие виды устройств: электронные, магнитные, оптические и
смешанные – магнитооптические. Каждый тип устройств организован на основе
соответствующей технологии хранения воспроизведения/записи цифровой
информации. Поэтому, в связи с видом и техническим исполнением носителя
информации различают: электронные, дисковые и ленточные устройства. Обратим
особое внимание на дисковые магнитные накопители – накопители на жестких
магнитных дисках.



1. Виды накопителей на магнитных дисках
Магнитные диски используются как запоминающие устройства,позволяющие
хранить информацию долговременно, при отключенном питании. Для работы с
Магнитными Дисками используется устройство, называемое накопителем на
магнитных дисках (НМД).

Основные виды накопителей:
. накопители на гибких магнитных дисках (НГМД);
. накопители на жестких магнитных дисках (НЖМД);
. накопители на магнитной ленте (НМЛ);
. накопители CD-ROM, CD-RW, DVD.
Им соответствуют основные виды носителей:
. гибкие магнитные диски (Floppy Disk) (диаметром 3,5’’ и ёмкостью
1,44 Мб; диаметром 5,25’’ и ёмкостью 1,2 Мб (в настоящее время
устарели и практически не используются, выпуск накопителей,
предназначенных для дисков диаметром 5,25’’, тоже прекращён)), диски
для сменных носителей;
. жёсткие магнитные диски (Hard Disk);
. кассеты для стримеров и других НМЛ;
. диски CD-ROM, CD-R, CD-RW, DVD.
Запоминающие устройства принято делить на виды и категории в связи с их
принципами функционирования, эксплуатационно-техническими, физическими,
программными и др. характеристиками. Так, например, по принципам
функционирования различают следующие виды устройств: электронные,
магнитные, оптические и смешанные – магнитооптические. Каждый тип
устройств организован на основе соответствующей технологии
хранения/воспроизведения/записи цифровой информации. Поэтому, в связи с
видом и техническим исполнением носителя информации, различают:
электронные, дисковые и ленточные устройства.
Основные характеристики накопителей и носителей:
. информационная ёмкость;
. скорость обмена информацией;
. надёжность хранения информации;
. стоимость.
Остановимся подробнее на рассмотрении вышеперечисленных накопителей и
носителей.
Принцип работы магнитных запоминающих устройств основан на способах
хранения информации с использованием магнитных свойств материалов. Как
правило, магнитные запоминающие устройства состоят из собственно
устройств чтения/записи информации и магнитного носителя, на который,
непосредственно осуществляется запись и с которого считывается
информация. Магнитные запоминающие устройства принято делить на виды в
связи с исполнением, физико-техническими характеристиками носителя
информации и т.д. Наиболее часто различают: дисковые и ленточные
устройства. Общая технология магнитных запоминающих устройств состоит в
намагничивании переменным магнитным полем участков носителя и считывания
информации, закодированной как области переменной намагниченности.
Дисковые носители, как правило, намагничиваются вдоль концентрических
полей – дорожек, расположенных по всей плоскости дискоидального
вращающегося носителя. Запись производится в цифровом коде.
Намагничивание достигается за счет создания переменного магнитного поля
при помощи головок чтения/записи. Головки представляют собой два или
более магнитных управляемых контура с сердечниками, на обмотки которых
подается переменное напряжение. Изменение величины напряжения вызывает
изменение направления линий магнитной индукции магнитного поля и, при
намагничивании носителя, означает смену значения бита информации с 1 на 0
или с 0 на 1.
Обычно НМД состоит из следующих частей :
. контроллер дисковода,
. собственно дисковод,
. интерфейсные кабеля,
. магнитный диск
Магнитный диск представляет собой основу с магнитным покрытием, которая
вращается внутри дисковода вокруг оси.
Магнитное покрытие используется в качестве запоминающего устройства.
Магнитные Диски бывают : жесткие(Винчестер) и гибкие(Флоппи).

Накопитель на жестких магнитных дисках - НЖМД(HDD).

Накопитель на гибких магнитных дисках - НГМД(FDD).

Кроме НЖМД и НГМД довольно часто используют сменные носители. Довольно
популярным накопителем является Zip. Он выпускается в виде встроенных или
автономных блоков, подключаемых к параллельному порту. Эти накопители
могут хранить 100 и 250 Мб данных на картриджах, напоминающих дискету
формата 3,5’’, обеспечивают время доступа, равное 29 мс, и скорость
передачи данных до 1 Мб/с. Если устройство подключается к системе через
параллельный порт, то скорость передачи данных ограничена скорость
параллельного порта.
К типу накопителей на сменных жёстких дисках относится накопитель Jaz.
Ёмкость используемого картриджа — 1 или 2 Гб. Недостаток — высокая
стоимость картриджа. Основное применение — резервное копирование данных.
В накопителях на магнитных лентах (чаще всего в качестве таких
устройств выступают стримеры) запись производится на мини-кассеты.
Ёмкость таких кассет — от 40 Мб до 13 Гб, скорость передачи данных — от 2
до 9 Мб в минуту, длина ленты — от 63,5 до 230 м, количество дорожек — от
20 до 144.



2. Накопители на гибких магнитных дисках.

Накопители на гибких дисках (дискетах, флоппи-дисках) позволяют
переносить документы с одного компьютера на другой, хранить информацию.
Основным недостатком накопителя служит его малая емкость (всего 1,44 Мб)
и ненадежность хранения информации. Однако именно этот способ для многих
российских пользователей является единственной возможностью перенести
информацию на другой компьютер. На компьютерах последних лет выпуска
устанавливаются дисководы для дискет размером 3,5 дюйма (89мм). Раньше
использовались накопители размером 5,25 дюймов. Они, не смотря на свои
размеры, обладают меньшей емкостью и менее надежны и долговечны. Оба типа
дискет обладают защитой от записи (перемычка на защитном корпусе
дискеты). В последнее время стали появляться альтернативные устройства:
внешние дисководы, с дисками емкостью до 1,5 Гб и намного большей
скоростью чтения, нежели дисковод флоппи-дисков, однако они ещё мало
распространены и весьма недёшевы.
Накопитель на съемном гибком магнитном диске (флоппи). Флоппи-диск
имеет пластиковую основу и находится в специальном пластиковом кожухе.
Флоппи-диск вставляется в FDD вместе с кожухом. Флоппи-диск (в FDD)
вращается внутри кожуха со скоростью 300 об/мин. На данный момент в IBM PC
используются 2 типа FDD : 5.25" и 3.5". Дискета 5.25" заключена в гибкий
пластиковый кожух. Дискета 3.5" заключена в жесткий пластиковый кожух. HDD
являются более скоростными устройствами, чем FDD.
Дискета или гибкий диск - компактное низкоскоростное малой ёмкости
средство хранение и переноса информации. Различают дискеты двух размеров:
3.5”, 5.25”, 8” (последние два типа практически вышли из употребления).
[pic] [pic]
3.5” дискета 5.25” дискета
Конструктивно дискета представляет собой гибкий диск с магнитным
покрытием, заключенный в футляр. Дискета имеет отверстие под шпиль привода,
отверстие в футляре для доступа головок записи-чтения (в 3.5” закрыто
железной шторкой), вырез или отверстие защиты от записи. Кроме того 5.25”
дискета имеет индексное отверстие, а 3.5” дискета высокой плотности -
отверстие указанной плотности (высокая/низкая). 5.25” дискета защищена от
записи, если соответствующий вырез закрыт. 3.5” дискета наоборот - если
отверстие защиты открыто. В настоящее время практически только используются
3.5” дискеты высокой плотности.
[pic]


Для дискет используются следующие обозначения:
- SS single side - односторонний диск (одна рабочая поверхность).
- DS double side - двусторонний диск.
- SD single density - одинарная плотность.
- DD double density - двойная плотность.
- HD high density - высокая плотность.
Накопитель на гибких дисках принципиально похож на накопитель на
жестких дисках. Скорость вращения гибкого диска примерно в 10 раз
медленнее, а головки касаются поверхности диска. В основном структура
информации на дискете, как физическая так и логическая, такая же как на
жестком диске. С точки зрения логической структуры на дискете отсутствует
таблица разбиения диска.
Работу контроллера НГМД удобно рассмотреть отдельно в режимах записи и
считывания байта данных.
Режим записи включается низким уровнем линии РС0(вывод 14 DD1). При
этом НГМД переводится в режим "Запись" (активен сигнал WRDATA).
Записываемый байт заносится в порт А и его восьмиразрядный код поступает на
вход многофункционального регистра DD2. Управление режимом работы этого
регистра осуществляется битовым счетчиком DD9 и дешифратором DD10. После
записи предыдущего байта, счетчик находится в состоянии сброса, и на всех
его выходах присутствуют сигналы логического нуля. При таком состоянии
входных сигналов дешифратор DD10 на выводе 7 формирует сигнал логического
нуля, который совместно с низким уровнем на выводе 2 элемента DD17.1
разрешает запись параллельного кода в регистр DD2. При любом другом
состоянии счетчика регистр переводится в режим сдвига.
Низким уровнем РС0 на элементе DD13. 4 блокируется канал считывания
информации с НГМД RDDATA. Логический нуль, поступающий на входы S триггера
DD11.1 после инвертирования элементом DD14.1 сигнала блокировки,
устанавливает логическую единицу на выводе 5 триггера DD11.1. Через
инвертор DD14.3 на входы сброса счетчиков DD7 и DD8 поступает сигнал
низкого уровня, что обеспечивает их непрерывную работу. Сигналы, снимаемые
с 8 и 9 вывода счетчика DD8, на элементах DD14.4,DD15.1, DD15.2 формируют
соответственно последовательности ИСС и ИСД. Импульс ИСД после
инвертирования элементом DD14.6 поступает на тактовый вход регистра DD2.
При поступлении тактового импульса происходит сдвиг вправо параллельного
кода, записанного в регистр, и на выводе 20 появляется очередной бит этого
кода. Сигналы записи формируются элементами DD13.1,DD13.2 и DD13.3. В
момент действия высокого уровня ИСД на выводе 2 DD13.1 присутствует
записываемый бит. Через элементы DD13.1 и DD13.2 бит поступает на вход
буферного усилителя DD6, а затем и на линию сигнала записи НГМД ( WRDATA).
Согласно временной диаграмме, приведенной на рис. 8, сигнал ИСС находится
в это время в состоянии логического нуля. Поэтому прохождение сигналов
через элемент DD133 запрещено. После того, как сигнал ИСД перейдет в
состояние логического нуля, прохождение информационного бита на запись
через элемент DD13.1 станет невозможно. При активном уровне ИСС через
открытые элементы DD13.3, DD13.2 и буфер DD6 на линию WR DATA поступит
логическая единица, сформированная на выводе 12 дешифратора DD10. Таким
образом, в момент действия ИСД на линию записи НГМД будут поступать
информационные биты, а в момент действия ИСС - единичные синхробиты.
Подсчет количества записанных бит ведет счетчик DD9. После прохождения
восьмого импульса ИСД его выводы перейдут в нулевое состояние, что вызовет
установку триггера готовности: на выводе 9 DD12.2 появится логическая
единица. Состояние триггера готовности программно опрашивается ДОС по
линии РВ7. При обнаружении единицы в этом разряде ПЭВМ запишет новый байт
в порт А DD1 (адрес F000H), при этом на элементах DD15.4, DD16.4, DD16.1,
DD16.2 сформируется сигнал сброса триггера готовности. Таким образом,
происходит записывание и считывание информации на НГМД.

3. Накопители на жестком магнитном диске (HDD)

Накопители на жёстком диске (винчестеры) предназначены для постоянного
хранения информации, используемой при работе с компьютером: программ
операционной системы, часто используемых пакетов программ, редакторов
документов, трансляторов с языков программирования и т.д. Наличие жёсткого
диска значительно повышает удобство работы с компьютером. Для пользователя
накопители не жёстком диске отличаются друг от друга, прежде всего, своей
ёмкостью, т.е. тем, сколько информации помещается на диске. Сейчас
компьютеры в основном оснащаются винчестерами от 520 Мбайт и более.
Компьютеры, работающие, как файл серверы, могут оснащаться винчестером 4 -
8 Мбайт и не одним.
Накопитель на несъемном магнитном диске, созданный на основе спец.
технологии (винчестерская технология - отсюда название). Магнитный диск
Винчестера (на металлической основе) имеет большую плотность записи и
большое число дорожек. Винчестер может иметь несколько Магнитных Дисков.
НЖМД типа Винчестер созданы в 1973 г. Все магнитные диски Винчестера
(объединенные в пакет дисков) - герметически упакованы в общий кожух.
Магнитные диски НЕ могут изыматься из HDD и заменяться на аналогичные !!!
Магнитные головки объединены в единый блок (блок магнитных головок).
Этот блок по отношению к дискам перемещается радиально. Во время работы PC
Пакет Дисков все время вращается с постоянной скоростью (3600 об/мин). При
считывании/записи информации блок магнитных головок перемещается
(позиционируется) в заданную область, где производиться посекторное
считывание/запись информации. В силу инерционности процесса обработки
информации и большой скорости вращения пакета дисков возможна ситуация,
когда блок магнитных головок не успеет считать очередной сектор. Для
решения этой проблемы используется метод чередования секторов (секторы
нумеруются не по порядку, а с пропусками). Например, вместо того, чтобы
нумеровать секторы по порядку : 1 2 3 4 5 6 7 ... , их нумеруют так : 1 7
13 2 8 14 3 9 ...

В последнее время появились более скоростные SCSI-контроллеры, которые
обеспечивают достаточную скорость обработки информации, и необходимость в
чередовании секторов - отпадает.
Итак, накопитель содержит один или несколько дисков (Platters), т.е.
это носитель, который смонтирован на оси - шпинделе, приводимом в движение
специальным двигателем (часть привода). Скорость вращения двигателя для
обычных моделей составляет около 3600 об/мин. Понятно, чем выше скорость
вращения, тем быстрее считывается информация с диска (разумеется, при
постоянной плотности записи), однако пластины носителя при больших оборотах
могут просто физически разрушиться. Тем не менее в современных моделях
винчестеров скорость вращения достигает 4500, 5400 или даже 7200 об/мин.
Сами диске представляют собой обработанные с высокой точностью
керамические или алюминиевые пластины, на которые нанесен специальный
магнитный слой (покрытие). В некоторых случаях используются даже стеклянные
пластины. Надо отметить, что за последние годы технология изготовления этих
деталей ушла далеко вперед. В старых накопителях магнитное покрытие обычно
выполнялось из оксида железа. В настоящее время для покрытий используются
гамма-феррит-оксид, изотропный оксид и феррит бария, однако наиболее
широкое распространение получили диски с напыленным магнитным слоем, а
точнее, с металлической пленкой (например, кобальта).
Количество дисков может быть различным - от 1 до 5 и выше, число
рабочих поверхностей при этом соответственно в 2 раза больше, правда, не
всегда. Иногда наружные поверхности крайних дисков или одного из них не
используются для хранения данных, при этом число рабочих поверхностей
уменьшается и может оказаться нечетным.
Наиболее важной частью любого накопителя являются головки чтения/записи
(read/write head). Как правило, они находятся на специальном позиционере,
который напоминает рычаг звукоснимателя на проигрывателе грампластинок
(тонарм). Это и есть вращающийся позиционер головок (head actuator). К
слову сказать, существуют также и линейные позиционеры, по своему принципу
движения напоминающие тангенциальные тонармы.
В настоящее время известно по крайней мере несколько типов головок,
используемых в винчестерах: монолитные, композитные, тонкопленочные и
магнитно-резистивные (magneto-resistance, MR). Монолитные головки, как
правило изготовлены из феррита, которые является достаточно хрупким
материалом. К тому же конструкция таких головок принципиально не допускает
высоких плотностей записей. Композитные головки меньше и легче, чем
монолитные. Обычно это стекло на керамическом основании; например,
используются сплавы, включающие в себя такие материалы, как железо,
алюминий и кремний. Керамические головки более прочные и обеспечивают более
близкое расстояние до магнитной поверхности носителя, что в свою очередь
ведет к увеличению плотности записи. При изготовлении тонкопленочных
головок используют метод фотолитографии, хорошо известный полупроводниковой
промышленности. В этом случае слой проводящего материала осаждается на
неметаллическом основании.
Одним из самых перспективных в настоящее время считают магнитно-
резистивные головки, разработанные фирмой IBM. Их производство начали также
компании Fujitsu и Seagate. Собственно магнитно-резистивная головка
представляет из себя сборку из двух головок: тонкопленочной для записи и
магнитно-резистивной для чтения. Каждая из головок оптимизирована под свою
задачу. Оказывается, магнитно-резистивная головка при чтении как минимум в
три раза эффективнее тонкопленочной. Если тонкопленочная головка имеет
обычный индуктивный принцип действия, т.е. переменный ток рождает магнитное
поле, то в магнитно-резистивном (по определению) изменение магнитного
потока меняет сопротивление чувствительного элемента. Магнитно-резистивные
головки по сравнению с другими позволяют почти на 50% увеличить плотность
записи на носителе. Все современные винчестеры от IBM оснащаются только
этими головками. Новые разработки IBM в области жестких дисков позволяют
обеспечить плотность записи 10 Гбит на квадратный дюйм, что примерно в 30
раз больше, чем сейчас. Речь идет о Giant MR-головках.
Заметим, что в современных винчестерах головки как бы “летят” на
расстоянии доли микрона (обычно около 0,13 мкм) от поверхности дисков, не
касаясь их. Кстати, в жестких дисках выпуска 80 года это расстояние
составляло еще 1,4 мкм, в перспективных же моделях ожидается его уменьшение
до 0,05 мкм.
На первых моделях винчестеров позиционер головок перемещался обычно с
помощью шагового двигателя. В настоящее время для этой цели используются
преимущественно линейные (типа voice coil, или “звуковая катушка”)
двигатели, иначе называемые соляноидными. К их преимуществам можно отнести
относительно высокую скорость перемещения, практическую нечувствительность
к изменениям температуры и положения привода. Кроме того при использовании
соляноидных двигателей реализуется автоматическая парковка головок
записи/чтения при отключении питании винчестера. В отличие от накопителей с
шаговым двигателем не требуется периодическое переформатирование
поверхности носителя.
Привод движения головок представляет из себя замкнутую сервосистему,
для нормального функционирования которой необходимо предварительно
записанная сервоинформация. Именно она позволяет позиционеру постоянно
знать свое точное местоположение. Для записи в сервоинформации система
позиционирования может использовать выделенные и/или рабочие поверхности
носителя. В зависимости от этого различают выделенные, встроенные и
гибридные сервосистемы. Выделенные системы достаточно дороги, однако имеют
высокое быстродействие, поскольку практически не тратят времени для
получения сервоинформации. Встроенные сервосистемы существенно дешевле и
менее критичны к механическим ударам и колебаниям температуры. К тому же
они позволяют сохранять на диске больше полезной информации. Тем не менее
такие системы, как правило медленнее выделенных. Гибридные сервоситемы
используют преимущества двух вышеназванных, т.е. большую емкость и высокую
скорость. Большинство современных винчестеров массового применения
используют встроенную сервоинформацию.
Кроме всего перечисленного, внутри любого винчестера обязательно
находится печатная плата с электронными компонентами, которые необходимы
для нормального функционирования устройства привода. Например, электроника
расшифровывает команды контроллера жесткого диска, стабилизирует скорость
вращения двигателя, генерирует сигналы для головок записи и усиливает их от
головок чтения и т.п. В настоящее время в ряде винчестеров применяются даже
цифровые сигнальные процессоры DSP (Digital Signal Processor).
Непременными компонентами большинства винчестеров являются специальные
внутренние фильтры. По понятным причинам большое значение для работы
жестких дисков имеет частота окружающего воздуха, поскольку грязь или пыль
могут вызвать соударение головки с диском, что однозначно приведет к выходу
его из строя.
Как известно, для установки дисковых накопителей в системном блоке
любого персонального компьютера предусмотрены специальные монтажные отсеки.
Габаритные размеры современных винчестеров характеризуются форм-фактором.
Форм-фактор указывает горизонтальные и вертикальные размеры винчестера. В
настоящее время горизонтальный размер жесткого диска может быть определен
одним из следующих значений: 1,8; 2,5; 3,5 или 5,25 дюйма (действительный
размер корпуса винчестера чуть больше). Вертикальный размер характеризуется
обычно такими параметрами, как Full Height (FH), Half-Height (HH), Third-
Height (или Low-Profile, LP). Винчестеры “полной” высоты имеют вертикальный
размер более 3,25’’(82,5 мм), “половинной” - 1,63’’ и “низкопрофильной” -
около 1’’. Необходимо помнить, что для установки привода, имеющего меньший
форм-фактор, чем монтажный отсек в системном блоке, придется использовать
специальные крепления.



Заключение
Развитие электронной промышленности осуществляется такими быстрыми
темпами, что буквально через один год, сегодняшнее "чудо техники"
становится морально устаревшим. Однако принципы устройства компьютера
остаются неизменными.
По словам специалистов, в скором времени компании не будет
комплектовать персональные компьютеры дисководами - их заменят USB-
накопители на флэш-памяти емкостью 16 мегабайт, которые сначала
предполагается устанавливать на компьютеры класса hi-end, а затем, при
положительной реакции покупателей, на все десктопы. Dell уже исключила
дисководы из стандартной комплектации ноутбуков. В компьютеры Macintosh
уже пять лет не устанавливаются флоппи-дисководы.
CD и DVD-диски могут занимать передовые позиции в технологиях хранения
данных, однако достаточно старомодные механические ленточные накопители до
сих пор играют важную роль в хранении больших объемов информации. Мало
того, эта роль столь велика, что ученые IBM разработали механизм записи 1
терабайта(что составляет 1 триллион байт данных) на линейном цифровом
ленточном катридже. Это величина, по утверждению разработчиков,
приблизительно в 10 раз больше любого другого доступного сейчас объема
ленточных накопителей. Такой объем информации равносилен 16 дням
непрерывного воспроизведения DVD-видео, или в 8 000 раз больше того объема
информации, который человеческий мозг сохраняет за время всей жизни. Хотя
накопитель на магнитной ленте сложно представить в домашнем интерьере на
настольных ПК, для среднего и крупного бизнеса эта технология остается
вполне актуальной при резервном хранении данных, к тому же лента менее
уязвима для взлома и воровства информации. Новейшая технология позволяет
упаковать накопитель с высокой плотностью записи данных так, что он
становится довольно компактным. В долгосрочной перспективе, возможно
снижение затрат компаний на хранение данных. В то время, как сейчас средняя
стоимость хранения информации на магнитной ленте составляет около $1 за
1Гб, возможно снижение этих затрат до 5 центов за Гб. Для сравнения,
стоимость хранения 1 Гб информации на жестком диске составляет сейчас $8-
10, а на устройствах на основе полупроводников - около $100 за Гб. Новые
технологии хранения данных на МЛ приобретут важную роль в таких
информационное емких отраслях, как, например, горное дело или архивы. Также
необходимость увеличения объемов хранимой информации возникает у корпораций
и ученых во всех дисциплинах, от геофизики до социологии. К примеру,
академические занятия требуют системы, позволяющей осуществлять
долгосрочный повторный доступ к данным с возможностью создания множества
копий и их легкого перемещения в любое место. Первый накопитель на
магнитной ленте был создан 50 лет назад, тогда разработка IBM Model 726
могла хранить всего 1,4МБ информации, приблизительно столько, сколько
сейчас помещается на обычный гибкий диск, а катушка для ленты имела около
12 дюймов в диаметре. Для сравнения, последняя разработка специалистов IBM
с возможностью хранения 1ТБ помещается в картридж размером с почтовый
конверт, а объем хранимой в нем информации эквивалентен содержимому 1.500
CD. По словам представителей компании, план возможного массового выпуска
терабайтных картриджей будет включать выпуск промежуточных продуктов в
течение нескольких лет. За это время планируется выпустить картриджи
объемом 200,400, а потом и 600ГБ.
Исследователям удалось изготовить магнитную пленку из сплава кобальта,
хрома и платины. Затем с помощью сфокусированного ионного пучка они
разрезали пленку на прямоугольные магнитные «островки» размером всего в 26
миллионных долей миллиметра в поперечнике. Это соответствует плотности
записи, составляющей 206 ГБ на квадратный дюйм. Правда, запись и считывание
информации в этом случае не удастся осуществлять непосредственно, поскольку
размер головок намного превышает размер «островков». Следовательно,
необходимы новые, более миниатюрные головки. Кроме того, потребуется
эффективная синхронизация процедур записи и считывания с движением головок.
В прототипе, разработанном в IBM, подобная синхронизация реализована,
однако широкое распространение подобных систем потребует значительного
усовершенствования технологий создания жестких дисков.


Используемые источники информации

1. Леонтьев В.П. ПК: универсальный справочник пользователя Москва
2000.
2. Фигурнов В.Э. IBM PC для пользователя. изд.5-е С.-Перетбург, АО
«Коруна» 1994.
3. Архитектура ПК, комплектующие, мультимедиа. - Рудометов Е.,
Рудометов В. – Питер, 2000.
4. http://citforum.co.kz
5. News Factor Network.







Реферат на тему: Визуализация контактных преобразований в среде Visual C++ 6

Бакалаврская работа на тему
Визуализация контактных преобразований в среде Visual C++ 6.
План.

Введение.

Глава 1. Создание графического интерфейса.
o Генерация исходного кода.
o Классы и файлы программы.
Глава 2. Использование функций рисования.
o Создание объекта контекста устройства.
o Выбор инструментов рисования.

Выбор стандартных инструментов рисования.

o Создание инструментов рисования.

Глава 3.Печать и предварительный просмотр.


Основы печати и предварительный просмотр.


Усовершенствованная печать.

Заключение.
Литература и источники.



Тема моей бакалаврской работы – «Визуализация контактных преобразований
(в среде Visual C++ 6.0)». Моя программа будет рисовать два эллипса с
определёнными аргументами, задаваемыми пользователем через диалоговые окна.
Также программа позволяет выводить изображения на принтер и осуществлять
предварительный просмотр.Visual C++ 6.0 - это сравнительно новая система
программирования, которая снискала уважение и популярность по всему миру. С
её помощью легко и удобно писать различные типы программ для Windows.
Шестая версия системы стала ещё более модной и удобной и избавляет от
большого количества рутинной работы по набивке и копированию стандартных
фрагментов подавляющего большинства программ. Безусловно, сердцевиной
системы, во многом определяющей её мощь и гибкость , является библиотека
классов MFC (Microsoft Foundation Classes – базовые классы Microsoft).
Новый 32-разрядный компилятор Microsoft Visual C++ 6.0 для Windows NT и
Windows 95 - одна из составных частей мощного пакета компиляторов
Developer Sudio, в который вхолят новейшие версии таких известных
программных продуктов, как Visual Basic, Visual J++, Visual FoxPro...
Система программирования Visual C++ - один из наиболее полных и
совершенных продуктов, предназначенных для разработки программного
обеспечения. Это высокоскоростная и удобная для программирования система,
предлагающая широкий набор разнообразных инструментов проектирования для
любого стиля программирования.Новые компоненты содержат средства для
программирования приложений, улучшенную реализацию ActiveX и Internet,
дополнительные возможности разработки баз данных, а также новые архитектуры
приложений и элементы взаимодействия между пользователями. Изучение правил
применения данной системы программирования (часто очень не простых, на
первый взгляд) может вас испугать, как это произошло со мной при первом
знакомстве со средой Visual C++.

Глава 1. Создание графического интерфейса.
Для создания моей программы мне потребуется программирование
графического интерфейса (GUI- Graphical User Interface). В программах с
графическим интерфейсом можно создавать одно и более окон с элементами
интерфейса (меню, панели инструментов, строки состояния, списки, полосы
прокрутки и тд). Данные программы могут выводить рисунки, растровые
изображения и текст с использованием большого набора шрифтов. Я буду
создавать свою программу, используя мастер генерации приложений App Wizard
и библиотеки MFC.
Существует несколько способов написания программ с графическим
интерфейсом с помощью Visual C++. Во-первых – на языке С или С++ с
непосредственным обращением к основным функциям Win32 API, которые
являются частью операционных систем Windows. При таком подходе требуется
написать множество строк программного кода, прежде чем перейти к решению
целевой задачи разрабатываемого приложения.
Во-вторых – с помощью библиотеки MFC, содержащей большой набор готовых
классов и вспомогательный код для выполнения стандартных задач
программирования в среде Windows (например, создания окон и обработки
сообщений). Кроме того, MFC используется для быстрого добавления в
программы панелей инструментов, многопанельных окон поддержки OLE.
Применяется для создания элементов, которые используются программными
компонентами и отображаются в Web-браузерах и других приложениях.
Использование MFC позволяет упростить программы с графическим интерфейсом,
что значительно облегчит процесс программирования. Отметим: функции MFC
содержат вызовы функций Win32 API. Говорят, что Win32 API «упакован» в
библиотеку MFC, представляющую более высокоуровневые и переносимые средства
программного интерфейса. Кроме того, в MFC-программах можно свободно
вызывать функции Win32 API, сохраняя возможность использования этого
интерфейса.

В-третьих – на языке С++ с использованием библиотеки MFC и различных
мастеров. Мастер AppWizard используется для генерации основы исходных
файлов программ. Аналогично, мастер AppWizard генерирует основную часть
кода для определения производных классов и обработчиков сообщений,
настройки библиотеки MFC, управления диалоговыми окнами, а также выполнения
других задач. Заметьте: возможности мастеров не ограничиваются генерацией
простых оболочек программ. Они позволяют создавать программы с большим
набором сложных компонентов. К таковым относятся панели инструментов,
строки состояния, контекстная справка, объекты OLE, средства доступа к
базам данных и даже законченные меню с частично или полностью
функционирующими командами открытия и сохранения файлов, печати,
предварительного просмотра печати и выполнения других задач. После
генерации основного кода программы с помощью мастера добавьте собственный
код, определяющий логику работы программы
Преимущество третьего подхода состоит в использовании не только уже
написанного кода MFC, но и сгенерированного исходного кода, позволяющего
решить многие рутинные задачи программирования. Библиотека MFC и матера
освобождают нас от необходимости создавать средства визуального интерфейса
вручную и обеспечивают соответствие этого интерфейса требованиям MicroSoft.

Генерация исходного кода.
Для генерации программы с помощью AppWizard создаётся новый проект
необходимого типа. Затем в последовательности диалоговых окон, отображаемых
мастером, задаются требуемые характеристики программы. Запускаем Developer
Studio и выполняем следующие шаги:
1) Выбираем в меню File команду New. В результате отобразится
диалоговое окно New.
2) Открываем вкладку Projects (если она не отображена), чтобы можно было
создать новый проект.
3) В списке типов проекта выбираем “MFC AppWizard(Exe)”. Это приведёт к
тому, что мастер AppWizard сначала предложит ввести необходимую информацию,
а затем создаст основу кода MFC-программы.
4) Вводим имя Ellipse в поле Project Name. Visual C++ присвоит новому
проекту и связанной с ним рабочей области имя Ellipse.
5) В поле Location задаём путь к папке с файлами, т.е. к каталогу проекта.
Можно принять стандартный каталог, указанный в этом поле. Стандартному
каталогу присваивается то же имя, что и рабочей области – Ellipse.
6) Чтобы завершить работу с вкладкой Projects диалогового окна New,
убедитесь, что в поле Platforms отмечен пункт Win32. До тех пор, пока не
будет установлена версия Visual C++ со средствами кросс-платформенной
разработки, Win32 останется единственной опцией в этой области.
7) Щелкаем на кнопке ОК в диалоговом окне. Отобразится первое из диалоговых
окон мастера AppWizard, помеченное “MFC AppWizard – Step 1”. В параметрах
мастера AppWizard, выбираемых по умолчанию, будет указано стандартное
значение.
8) В диалоговом окне выбираем тип приложения Single Document, отмечаем
стандартный параметр Document/View Architecture Support и задаём поддержку
английского языка. Выбор типа приложения Single Document определяет то, что
AppWizard генерирует приложения с однооконным интерфейсом (Single Document
Interface – SDI), отображающее единственное окно документа. Задание
параметра Document/View Architecture Support приведёт к тому, что мастер
AppWizard сгенерирует отдельные классы для хранения и отображения
данных программы, а также код для чтения и записи данных на диске.
Щёлкаем Next для перехода к следующему диалоговому окну.
9) Чтобы исключить из программы поддержку баз данных, в диалоговом
окне выбираем пункт None. Щёлкаем Next для перехода к следующему
диалоговому окну.
10) В диалоговом окне выбираем пункт None чтобы исключить из программы
поддержку составных документов. Убираем опцию Automation, чтобы
устранить поддержку автоматизации. Щелкаем Next, чтобы перейти к следующему
диалоговому окну.
11) В диалоговом окне выбираем поддержку печати (Printing and Print
preview), панель инструментов (Docking toolbar), строку состояния (Initial
status bar)и поддержку помощи (Context-sensitive Help), а также 3D
controls. Щёлкаем Next, чтобы перейти к следующему диалоговому окну.
12) Чтобы сгенерировать для программы традиционный пользовательский
интерфейс библиотеки MFC, в диалоговом окне мастера выбираем установку
стиля проекта “MFC Standart”. Чтобы мастер включил комментарии в
генерируемые исходные файлы, выбираем установку “Yes,Please”. Комментарии
поясняют назначение кода и определяют места, в которые программист должен
добавить собственный код. Наконец выбираем вариант связи библиотеки MFC “As
a staticaly linked library”. При этой установке код переносится прямо в
исполняемый файл. Щёлкаем на Next, чтобы отобразить следующее диалоговое
окно.
13) Это диалоговое окно отображает информацию по каждому из четырёх
главных классов, созданных для программы мастером. Не изменяем эту
информацию. Щелкаем Finish
14) Диалоговое окно New Project Information позволяет подытожить

сделанный ранее выбор характеристик программы. Щелкаем ОК, и мастер
создаст указанный каталог проекта, сгенерирует исходные файлы программы и
откроет вновь созданный проект Ellipse.


Классы и файлы программы.
Программу Ellipse будем называть приложением с однооконным
интерфейсом(SDI). Это означает, что в данный момент времени в ней может
отображаться только один документ. Когда мастер создаёт приложение SDI, он
порождает четыре главных класса:
- класс документа;
- класс представления (view);
- класс главного окна;
- класс приложения;
Исходные задачи программы распределяются по этим четырём главным
классам, и мастер создаёт четыре отдельных исходных файла для каждого из
них. По умолчанию он порождает имена классов и исходных файлов по имени
проекта.
Класс документа в Ellipse называется CЕllipseDoc. Он порождается из
класса CDocument библиотеки MFC. Заголовочный файл CEllipseDoc имеет имя
CEllipseDoc.h, а имя файла реализации - CEllipseDoc.cpp. Класс документа
отвечает за хранение данных программы и за чтение и запись данных на диск.
Класс представления в Ellipse называется CЕllipseView и порождается от
MFC-класса Cview. Заголовочный файл CEllipseView называется
CEllipseView.h, а имя файла реализации - CЕllipse.cpp. Класс представления
отвечает за отображение данных программы (на экране, на принтере, или
другом устройстве) и за обработку информации, вводимой пользователем.
Этот класс управляет окном представления (view window), которое
используется для отображения данных программы на экране. Класс
представления в Ellipse просто отображает строку сообщения внутри окна
представления.
Класс главного окна в Ellipse называется CMainFraim и порождается от
MFC-класса CFrameWnd. Заголовочный файл CMainFrame называется MainFrm.h, а
имя файла реализации - MainFrm.cpp. Класс главного окна управляет главным
окном программы, которое является обрамляющим окном и содержит рамку окна,
строку заголовка, строку меню и системное меню. Обрамляющее окно также
содержит кнопки Minimize, Maximize, Close, а иногда и другие элементы
пользовательского интерфейса, например, панель инструментов, строку
состояния. Окно представления, управляемое классом представления, занимает
внутри обрамляющего окна пустую область, которая называется клиентской
областью главного окна. Окно представления не имеет видимых элементов,
кроме текста и графики, отображающейся явно. Окно представления – дочернее
окно главного окна, поэтому оно всегда отображается поверх и внутри границ
рабочей области главного окна.
Наконец, класс приложения назван CEllipseApp и порожден из MFC–класса
CWinApp. Файл заголовков класса CEllipseApp назван Ellipse.h, а файл
реализации – Ellipse.cpp. Класс приложения управляет программой в целом.
Это значит, что он выполняет общие задачи, не относящиеся к каким-либо
другим трём классам (например, инициализацию программы и её заключительную
очистку). Каждая MFC–программа должна создать в точности один экземпляр
класса, порождённого из класса CWinApp. Четыре главных класса обращаются
друг к другу и обмениваются данными, вызывая открытые функции-члены другого
класса и посылая сообщения.



Глава 2.

Использование функций рисования

1) Создание объекта контекста устройства
2) Выбор инструментов рисования
3) Выбор стандартных инструментов рисования
4) Создание инструментов рисования

Существуют два различных подхода к созданию и манипулированию
графическими изображениями. Можно также вызвать функции рисования в
процессе выполнения программы. Эти функции предназначены для создания
рисунков, состоящих из отдельных геометрических фигур, таких, как прямые
линии, дуги и прямоугольники. Возможно создание и отображение растровых
изображений (называемых точечными рисунками), сохраняющих текущие коды
пикселей, используемых для воспроизведения образов на устройстве. Растровые
изображения удобны для создания более сложных рисунков, которые нелегко
разделить на отдельные геометрические фигуры. Средства, описанные в этих
главах, взаимосвязаны. Функции рисования используются для изменения узоров
пикселей внутри растровых изображений, а битовые операции применяются для
манипулирования изображениями, созданными с помощью функций рисования,
например, для перемещения или растягивания изображения.
Рассматривается как используются функции рисования, предоставляемые
системой Windows и библиотекой MFC. Эти функции в сочетании с растровыми
средствами составляют полный набор инструментов создания графических
образов внутри окна представления или какого-либо другого устройства
(например, принтера). Существуют специальные технические приемы печати
графических изображений или текстов. В этой главе я рассмотрю основные
действия, выполняемые при создании графических
изображений:
1. Создание объекта контекста устройства.
2. Выбор средств рисования внутри объекта.
3. Установка атрибутов рисования для объекта.
4. Вызов функций-членов объекта для рисования графики.

1).Создание объекта контекста устройства

Как известно, для отображения текста или графики необходим объект
контекста устройства, соответствующий окну или устройству вывода данных.
При рисовании этот объект сохраняет выбранные средства и установленные
атрибуты и предоставляет функции-члены для рисования точек, линий,
прямоугольников и других фигур.
Для отображения графического объекта с помощью функции OnDraw класса
представления используется объект контекста устройства, адрес которого
передается в функцию.
void CMyView::OnDraw (CDC* pDC )
{
// отобразите графику, используя 'pDC->'
}

Функция OnDraw вызывается при рисовании или перерисовке окна
представления. Если класс представления поддерживает прокрутку (т. е.
порожден от класса CScrollView), то переданный в него объект контекста
устройства настраивается на текущую позицию прокрутки документа.
Если программа отображает графику не в окне представления, а в каком-то
другом окне (например, в диалоговом), то класс окна для рисования или
перерисовки предоставляет обработчик сообщений wm_paint, называемый
OnPaint, который создает объект контекста устройства, порождаемый от MFC-
класса CPaintDC.


void CMyDialog::OnPaint()

{

CPaintDC PaintDC (this) ;

// отобразите графику, используя 'PaintDC". . .

)

Примечание
Когда нужно нарисовать или перерисовать окно представления, ему передают
сообщение wm_paint. Класс cview предоставляет функцию OnPaint, которая
создает и подготавливает объект контекста устройства, а затем передает
его в функцию OnDraw. Класс окна, который не порождается от cview, должен
предоставлять собственную функцию OnPaint, выполняющую рисование
содержимого окна.

Чтобы отобразить графику в окне представления или другом окне из функции,
которая не обрабатывает сообщения OnDraw или OnPaint, нужно создать объект
контекста устройства, являющийся членом MFC-класса CClientDC. Если окно
представления поддерживает прокрутку, то перед использованием объекта
необходимо вызвать функцию CScrollView: :OnPrepareDC для настройки объекта
на текущую позицию документа.

void CMyView::OtherFunction ()
{
CClientDC ClientDC (this)

// Если графика отображается в окне представления,

// поддерживающем прокрутку:
OnPrepareDC (sdientDC) ;
// для отображения графики используется 'ClientDC' ...

}

Чтобы отобразить графику вне рабочей области окна, создаём объект класса
cwindowDC.

Все функции рисования являются членами класса CDC. Так как cdc — базовый
класс по отношению к остальным классам объекта контекста устройства, то эти
функции вызываются при использовании объекта контекста устройства
произвольного типа.
Основной акцент сделан на рисовании внутри окна (прежде всего окна
представления). Однако перечисленные функции и способы не зависят от типов
устройств и используются для отображения рисунков на других устройствах,
например принтерах или плоттерах.

2)Выбор инструментов рисования.

Имеются два инструмента, выбор которых отражается на работе функций
класса CDC — перо и кисть. Перо влияет на способ рисования линии. Оно
действует как на прямые и кривые линии (например, нарисованные с
использованием функции LineTo или Arc), так и на границы замкнутых фигур
(например, прямоугольников и эллипсов). Кисть действует на способ рисования
внутренней области замкнутых фигур. Очевидно, что замкнутая фигура состоит
из двух отдельных элементов: границы и внутренней области.
Инструменты рисования, определенные в этом разделе, т.е. перья и кисти,
принадлежат к категории объектов, называемых графическими или объектами
GDI (термин объект относится к структуре данных Windows, а не к объекту
C++; GDI означает графический интерфейс устройства –
graphics device interface). Существуют другие графические объекты:
шрифты , растровые изображения , области, контуры и палитры. Хотя области,
контуры и палитры также относятся к рисованию. Полное описание областей,
контуров и палитр приведено в следующих разделах справочной системы:
Platform SDK, Graphics and Multimedia Services, GDI . Информация об
использовании областей и палитр в MFC - в следующих разделах справочной
системы: Visual C++ Documentation, Reference, Microsoft Foundation Class
Library and Templates, Microsoft Foundation Class Library, Class Library
Reference, CRgn и CPalette. Информация об использовании контуров в MFC - в
разделах Visual C++ Documentation, Reference, Microsoft Foundation Class
Library and Templates, Microsoft Foundation Class Library, Class Library
Reference, CDC, CDC Class Members, а также в разделе Path Functions.
При первичном создании объект контекста устройства содержит заданные по
умолчанию перо и кисть. Перо рисует сплошную черную линию шириной в 1
пиксель независимо от текущего режима отображения (который будет рассмотрен
далее). Кисть заливает внутреннюю область фигуры с замкнутым контуром
непрозрачным белым цветом. Для каждого из этих инструментов приведены
функции рисования, на которые влияет выбор инструмента, и выбранный по
умолчанию идентификатор инструмента. Если нужно выбрать инструмент,
идентификатор передается в функцию SelectStockObject .
Чтобы изменить текущее перо или кисть, выбираем стандартное перо или
кисть или создаём пользовательские, а затем выбираем их в объекте контекста
устройства. Выбранные перо или кисть используются до следующего явного
выбора других инструментов рисования.


3)Выбор стандартных инструментов рисования

Выбирается перо или кисть вызовом функции SelectStockObject класса cdc:

CGdiObject* SelectStockObject (int nIndex);

Параметр nIndex является кодом отдельного стандартного объекта, который
передается в объект контекста устройства. Можно вызвать функцию
SelectStockObject для выбора стандартного шрифта.

Например, следующие строки выбирают белое перо и серую кисть.

void CMyView:;OnDraw(CDC* pDC)

(

pDC->SelectStockObject (WHITE_PEN) ;
pDC->SelectStockObject (GRAY_BRUSH) ;

// Вызов других графических функций и рисование графики ... // (линии
и границы будут белыми, внутренние области // фигур с замкнутыми
контурами - серыми)

}

При выборе пера null_pen линии не рисуются. Значит, выбор не удачен.
Аналогично при выборе NULL_BRUSH внутренняя часть фигуры не закрашивается.
Этот инструмент удобен при рисовании фигур, состоящих только из границы
(прямоугольник), если необходимо оставить неизменным существующее на экране
графическое изображение внутри границы.

Примечание
Стандартное перо рисует сплошные линии шириной в один пиксель независимо
от заданного режима отображения. Стандартная кисть закрашивает сплошным
цветом, а не узорами.

4)Создание инструментов рисования

Можно создать перо или кисть, выполнив следующие действия.
1. Создаём экземпляр класса СРеn для пера или CBrush для кисти.
2. Вызываем соответствующую функцию класса СРеn или CBrush для
инициализации пера или кисти.
3. Выбираем перо или кисть в объекте контекста устройства, сохраняя
указатель на предыдущее перо или кисть.
4. Вызываем функции рисования для выполнения графического вывода.
5. Снова выбираем старое перо или кисть в объекте контекста устройства.
Для создания временного пера или кисти можно объявить экземпляр класса
СРеn или CBrush как локальный объект внутри функции, генерирующей
графический вывод. Этот метод продемонстрирован в примере фрагмента
программы, приведенном в конце этого раздела. При многократном
использовании в программе выбранного пера или кисти объект удобнее объявить
как переменную класса представления или любого класса, управляющего окном
вывода.
Для инициализации пера вызываем функцию CreatePen класса СРеn.

BOOL CreatePen (int nPenStyle, int nWidth, COLORREF crColor) ;

Параметр nPenStyle описывает стиль линии, нарисованной пером.
Присваивание стиля ps_null создает перо, совпадающее со стандартным пером
null_pen. Стиль ps_insideframe выбирает перо для рисования границы вокруг
фигуры с замкнутым контуром, расположенной внутри ограничивающего
прямоугольника. Ограничивающие прямоугольники и эффекты стиля
ps_insideframe описаны далее. Стили ps_dash, ps_dot, ps_dashdot и PS
dashdotdot используются, если ширина пера равна 1 пикселю. Если ширина пера
превышает этот размер, то перечисленные стили генерируют сплошные линии.
Параметр nWidth описывает ширину линии в логических единицах,
используемых в текущем режиме отображения. Если ширина пера — 0, то
ширина линии — 1 пиксель, независимо от текущего режима отображения. Такая
ширина генерируется и стандартным пером, и заданным по умолчанию.
Параметр crColor задает цветовой код линии. Легче всего описать цвет,
используя макрос Win32 rgb.

ColorRef RGB (bRed, bGreen, bBlue)

Параметры bRed, bGreen и bBlue показывают относительную интенсивность
красного, зеленого и синего цветов. Каждому параметру можно присвоить
значение в диапазоне от 0 до 255. В табл. 19.3 приведены значения, которые
передаются в макрос RGB для описания 16 чистых цветов, доступных в
стандартном графическом режиме VGA.
Обратим внимание: перу присваивается только чистый цвет. Чистый цвет -
это цвет, генерируемый аппаратными средствами для видеоотображения, который
не требуется имитировать смешиванием различных цветов (известным как
имитация полутонов (dithering)). Если присвоить перу цветовой код, который
не относится НИ к одному из чистых цветов, то линия будет нарисована с
использованием ближайшего чистого цвета. Исключение из этого правила: если
перо имеет стиль ps_insideframe и ширину более 1 пикселя, то Windows
использует полутона (если присвоенный цвет не является чистым).
Примечание
Класс СPеn предоставляет более совершенную функцию инициализации пера,
называемую ExtCreatePen. В среде Windows NT эта функция задает способ
изменения и объединения широких перьев, что позволяет создавать перья с
пользовательским стилем. Однако Windows 95 не поддерживает большинство из
этих средств. Заметим также, что вместо вызова функции CPen: :CreatePen,
объект пера можно инициализировать при его создании, передавая
конструктору СPеn соответствующие параметры. Информация о
конструкторах СРеn и ExtCreatePen - в следующих разделах справочной
системы: Visual C++ Documentation, Reference, Microsoft Foundation Class
Library and Templates, Microsoft Foundation Class Library, Class Library
Reference, СРеп.

Кисть можно инициализировать так, чтобы она окрашивала однородным цветом
внутреннюю область фигур, вызывая функцию CreateSolidBrush класса CBrush с
параметром crColor, описывающим цвет заливки. Можно задать любой цвет. Если
присвоенный цвет не является чистым, то Windows генерирует
псевдополутоновый цвет (полученный имитацией полутонов).

BOOL CreateSolidBrush (COLORREF crColor);

Кроме того, для заливки внутренней области фигур можно инициализировать
кисть, вызвав функцию CreateHatchBrush класса Cbrush.

BOOL CreateHatchBrush (int nindex, COLORREF crColor);
Параметр nIndex задает узор. Параметр crColor описывает цвет линий
штриховки.
Функция CreatePatternBrush класса CBrush вызывает кисть для заполнения
фигуры заданным узором.

BOOL CreatePatternBrush (CBitmap* pBitmap);

Параметр pBitmap является указателем на объект растрового изображения.
Если фигура рисуется с помощью кисти, то ее внутренняя область полностью
заполняется копиями растрового изображения, размещаемыми одна возле другой.
Объект растрового изображения создается и инициализируется. Задаём размер
растрового изображения равным 8х8 пикселей.
Если растровое изображение монохромное, то Windows использует текущие
цвета текста и фона.

Примечание
Объект кисть (как и перо) можно инициализировать при создании, передавая
конструктору CBrush соответствующие параметры. Информация об этом - в
следующих разделах справочной системы: Visual C++ Documentation,
Reference, Microsoft Foundation Class Library and Templates, Microsoft
Foundation Class Library, Class Library Reference, CBrush.

Как только перо или кисть инициализированы, их выбирают в объекте
контекста устройства с помощью функции SelectObject класса cdc. Для выбора
пера вызовите функцию SelectObject,

CPen* SelectObject (CPen* рРеn) ;

где рРеn — указатель на объект-перо. Функция SelectObject возвращает
указатель на предыдущий объект-перо, выбранный в объекте контекста
устройства. Если перо ранее не выбиралось, это будет временный объект пера,
заданного по умолчанию. Для выбора кисти вызывается функция SelectObject.

CBrush* SelectObject (CBrush* pBrush);

где pBrush — указатель на объект-кисть. Функция SelectObject возвращает
указатель на ранее выбранную кисть. Если она ранее не выбиралась, то это
будет временный объект для заданной по умолчанию кисти.
При вызове функции SelectObject для выбора пера или кисти нужно сохранить
возвращаемый указатель. После вызова графических функций для отображения
выводимой информации с использованием пера или кисти (что описано далее в
этой же главе) удалите перо или кисть из объекта контекста устройства и
вызовите функцию SelectObject для выбора предыдущего объекта.
Перо или кисть необходимо удалить из объекта контекста устройства, чтобы
объект контекста устройства не хранил некорректный дескриптор
после удаления объекта. При инициализации пера или кисти Windows добавляет
дескриптор, сохраняемый внутри объекта. При выборе пера или кисти объект
контекста устройства также сохраняет этот дескриптор. Когда объекты выходят
за пределы области видимости или удаляются, деструктор объекта уничтожает
дескриптор. Однако этот шаг не нужно выполнять, если объект контекста
устройства удаляется до удаления объекта пера или кисти.
В моей программе будут рисоваться два эллипса, первый по формуле
x2 y2
( --- --- =1 ;
a2 b2
а второй, по формуле

x=a cos t
(
y=b sin t

Вот функция, которая рисует оба эллипса:
void CEllipseView::OnDraw(CDC* pDC)
{
CEllipseDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
float x, y, t, PI = 3.1415926;
for (x = -pDoc->A; x < pDoc->A; x+=0.005)
{
y = sqrt(abs((1.0 - (x*x)/(pDoc->A*pDoc->A))*(pDoc->B*pDoc->B)));
pDC->SetPixel(x*5+pDoc->A*5+10,
y*5+pDoc->B*5+10, RGB(0xFF,0,0));
y = -sqrt(abs((1.0 - (x*x)/(pDoc->A*pDoc->A))*(pDoc->B*pDoc->B)));
pDC->SetPixel(x*5+pDoc->A*5+10,
y*5+pDoc->B*5+10, RGB(0xFF,0,0));
}
for (t = -PI; t < PI; t+=0.005)
{
x = pDoc->Ac * cos(t);
y = pDoc->Bc * sin(t);
pDC->SetPixel(x*5+MAX(pDoc->A,pDoc->Ac)*15+20,
y*5+MAX(pDoc->B,pDoc->Bc)*5+10, RGB(0,0x20,0x80));
}

Для передачи параметров в функцию рисования я создал два диалоговых
окна, одно для первой формулы (первого эллипса), другое – для второй
формулы (второго эллипса). При нажатии на иконки эллипсов появляются эти
диалоговые окна и предлагается ввести соответствующие параметры формулы
эллипса. Диалоговые окна вызываются в файле EllipseDoc.Cpp, вот функции
вызова обоих диалоговых окон:
void CEllipseDoc::OnNewEllipseProperties()
{
CEditEllipseProperties dlg;
dlg.m_A = A;
dlg.m_B = B;
dlg.DoModal();
A = dlg.m_A;
B = dlg.m_B;
UpdateAllViews(NULL);
}

void CEllipseDoc::OnEditEllipseProperties2()
{
CEditEllipseProperties dlg;
dlg.m_A = Ac;
dlg.m_B = Bc;
dlg.DoModal();
Ac = dlg.m_A;
Bc = dlg.m_B;
UpdateAllViews(NULL);
}



Глава 3.Печать и предварительный просмотр

1)Основы печати и предварительный просмотр
2)Усовершенствованная печать

В этой главе я объясню, как выполняется печать текстов и графических
изображений, а также предварительный просмотр внешнего вида документа перед
печатью. А также, как выполняются стандартные команды Print..., Print
Preview и Print Setup из меню File. Так как в Windows применяется модель
вывода данных, не зависящая от устройств, для отображения текста и графики
на печатной странице можно использовать уже известные вам способы.
Рассмотрим особые способы печати - выбор и установку принтера, разбиение
документа на страницы и другие действия, необходимые для работы принтером.
Прежде всего рассмотрим как обеспечивается поддержка печати, позволяющая
программе печатать или предварительно просматривать одну страницу. Показаны
более совершенные способы печати или просмотра страниц документа, который
не помещается на одну страницу. Примеры добавления средств поддержки печати
и предварительного просмотра приведены в программе .

Основы печати и предварительный просмотр

При генерации новой программы с использованием мастера AppWizard, в нее
можно включить основные средства поддержки печати и предварительного
просмотра, установив опцию Printing And Print Preview в диалоговом окне
(Step 4) AppWizard , в следствие чего команды Print..., Print Preview и
Print Setup... добавляются в меню программы File. При реализации мастером
AppWizard команда Print... печатает ту часть документа, которая помещается
на одной странице. Оставшаяся часть документа игнорируется.

Подобным образом команда Print Preview отображает распечатку,
появляющуюся на одной странице документа. Как вы увидите, команды Print...
и Print Preview вызывают функцию OnDraw, чтобы сгенерировать реально
выводимую текстовую или графическую информацию. Команда Print Setup...
отображает обычное диалоговое окно Print Setup, позволяющее выбрать тип
принтера и задать его установки.
В этом разделе в мою программу Ellipse добавлены все средства печати,
позволяющее печатать так же, как и при выборе опции Printing And Print
Preview в первом варианте программы, сгенерированном мастером AppWizard. В
новую версию моей программы Ellipse включены все средства, которые вошли в
программу.

Модификация ресурсов
Чтобы отобразить ресурсы программы, перед началом модификации ресурсов
откроем проект Ellipse и вкладку Resource View в окне Workspace. Затем
откроем меню idr_mainframe в конструкторе меню. Непосредственно под
существующей командой Save As... в меню File добавляем разделитель и
команды Print..., Print Preview и Print Setup....

Новинки рефератов ::

Реферат: Иван Владимирович Мичурин (Ботаника)


Реферат: Библейские сюжеты в живописи (Искусство и культура)


Реферат: Архіватори (Программирование)


Реферат: Исаковский (Литература : русская)


Реферат: Когнитивно-рациональное консультирование (Психология)


Реферат: Авторское право и авторский договор (Гражданское право и процесс)


Реферат: Билеты по социологии (Социология)


Реферат: Оценка работы сотрудников аппарата городского совета (Социология)


Реферат: Кабинетная система в условиях разноуровневого обучения (Педагогика)


Реферат: Екатерина II и Екатерина Дашкова-женщины XVVIII века (Исторические личности)


Реферат: Фотосинтез - проще простого (Биология)


Реферат: Развитие рыбохозяйственного комплекса Приморского края (Предпринимательство)


Реферат: Русская православная церковь как субъект социальной работы (Социология)


Реферат: Социология общественного мнения (Социология)


Реферат: Автоматизация бухгалтерского учета (Бухгалтерский учет)


Реферат: Шпаргалка информационные системы в экономике (Бухгалтерский учет)


Реферат: Важнейшие природы соединения алюминия (Металлургия)


Реферат: Ответы к государственным экзаменам для эколого-биологического факультета ПетрГУ (Биология)


Реферат: Проблема взаимодействия семьи и детского дошкольного учреждения в формировании готовности ребенка к школьному обучению (Педагогика)


Реферат: Образование в средневековой Германии (Педагогика)



Copyright © GeoRUS, Геологические сайты альтруист