Главная » Просмотр файлов » Основы программирования

Основы программирования (947332), страница 46

Файл №947332 Основы программирования (Иванова Г.С. Основы программирования) 46 страницаОсновы программирования (947332) страница 462013-09-15СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 46)

Процедура CloseGraph - завершает работу в графическом режиме:выгружает драйвер и восстанавливает текстовый режим. Если завершитьпрограмму, не выходя из графического режима, то нормальная работа MSDOS нарушается, так как MS DOS функционирует в текстовом режиме.Примечание. Если программа выполняется в среде программирования Borland Pascal, тосреда сама восстановит текстовый режим после завершения работы программы.5. Процедура RestoreCrtMode - осуществляет временный возврат в тек­стовый режим с сохранением графического изображения в видеобуфере.6.

Процедура SetGraphMode(mode:integer) - осуществляет возврат вграфический режим после временного выхода, осуществленного процедуройRestoreCrtMode.7. Функция GetGraphMode:integer - возвращает номер активного графи­ческого режима.Таким образом, временный выход в текстовый режим обычно оформля­ется следующим образом:2708. Управление техническими средствами и взаимодействие с MS DOSRestoreCrtMode; {переход в текстовый режим}... {выполнение обработки в текстовом режиме}SetGraphMode(GetGraphMode); {возврат в графический режим}Процедуры и функции управления цветом. Модуль Graph содержитспециальные процедуры и функции управления цветом изображения.1. Процедура GetPalette(Var Palette:PaletteTyре) - возвращает размер ицвета текущей палитры.

Палитра при этом считывается в специальную пере­менную типа PaletteType, также определенного в модуле Graph:ТуреPaletteType = recordsize:byte; {размер палитры}Colors:array[O..MaxColorsJ of short in t; {цвета палитры}end;Цвета палитры кодируются десятичными числами от О до 63.2. Процедура SetAllPalette(Palette: PaletteType) - осуществляет установ­ку палитры. Новая палитра при этом записывается в переменную типаPaletteType, а цвета можно кодировать десятичными числами или использо­вать для их определения специальные константы:EGABlack = 0;EGABlue = 1;EGAGreen- 2;EGACyan = 3;EGARed = 4;EGAMagenta=5;EGABrown-20;EGALiglitGrey=7;{черный}{синий}{зеленый}{голубой}{красный}{фиолетовый}{коричневый}{светло-серый}EGADarkGrey=56;{темно-серый}EGALightBlue= 57; {светло-синий}EGALightGreen = 58; {светло-зеленый}EGALightCyan = 59; {светло-голубой}EGALightRed = 60; {розовый}EGALightMagenta = 61; {сиреневый}EGAYellow = 62;{желтый}EGAWhite = 63;{белый}3.

Процедура SetPalette(ColorNum,Color:word) - заменяет цвет в регис­тре палитры с номером ColorNum на цвет Color.4. Процедура SetBkColor(Color:word) - устанавливает новый цвет фона.При инициализации графического режима видеобуфер очищается (обнуляет­ся). При этом все точки оказываются связаны с О регистром палитры, кото­рый и считается регистром, хранящим цвет фона. Процедура SetBkCoIor за­писывает в О регистр палитры цвет, указанный в параметре Color. Результатвызова этой процедуры аналогичен результату вызова процедурыSetPalette(0,Color).5.

Процедура SetColor(ColorNum:word) - объявляет цвет в регистре сномером ColorNum текущим цветом рисования.6. Процедура GetDefaultPalette(var Palette: PaletteType) - возвращаетстандартную палитру.271Часть 1. Основы алгорнтмизауии и процедурное программированиеВ качестве примера рассмотрим фрагмент программы, осуществляю­щий установку цвета фона и цвета рисования, а также чтение текущей пали­тры и вывод значений, содержащихся в регистрах палитры:SetPalette(5,18); {записываем в 5-й регистр палитрыцвет 010010 - ярко-зеленый}SetColor(5); {текущий цвет рисования - цвет 5-го регистра палитры}SetBkColor(5); {записываем в 0-й регистр палитрыцвет фона 000101 - фиолетовый: фон сразу меняет цвет}GetPalette(p); {читаем палитру в переменную р типа PaletteType}for i:=0 to p.size do Write(p.colors[i]:5); {выводим цвета палитрына экран}Процедуры и функции управления типом, толщиной линии и видомштриховки.

Модуль Graph содержит средства, позволяющие управлять ти­пом и толщиной линии, а также образцом закраски замкнутых контуров.1. Процедура SetLineStyle(styley patterity thickness: word) - устанавлива­ет стиль style или образец pattern линии и ее толщину thickness.Для установки стиля используют следующие константы:SolidLn=0; {сплошная}DottedLn=l; {точечная}CenterLn=2; {штрихпунктирная}DashedLn=3; {пунктирная}UserBitLn=4; {определенная программистом в образце}Если указаны стили 0..3, то образец игнорируется. Если установленстиль 4, то вид линии определяется образцом.Образец линии - 16 или 48 бит, заданных шестнадцатеричным числом,единицы и нули кодируют точки и пропуски, например: комбинация 10101010 1010 1010, которая соответствует шестнадцатеричному числу $АААА,означает линию из частых точек.

Образцы из 48 бит используют для опреде­ления вида линии тройной толщины.Толщину линии можно установить одинарной и тройной, соответствую­щие константы выглядят следующим образом:NormWidth=l; {нормальная толщина линии}ThickWidth=3; {тройная толщина линии }Например:SetLmeStyle(UserBitLn,$AAAA,NormWidth); {устанавливает текущийстиль линии: частые точки, линия одинарной толщины}2728. Управление техническими средствами и взаимодействие с MS DOS2. Процедура SetFUlStyle(fillstyle, color: word) - устанавливает образецfillstyle и цвет color штриховки замкнутых контуров. Для определения образ­цов штриховки можно использовать следующие константы:EmptyFill-O;SolidFill-l;LineFill-2;LtSlashFill-3;SlashFiU=4;BkSlashFill-5;LtBkSlashFill=6;HatchFill-J;XHatchFill=8;InterLeaveFill=9;WideDotFill=10;CloseDotFill=ll;UserFill=12;{без штриховки - прозрачный контур}{сплошная заливка}{горизонтальные линии}{НИ - тонкие линии}{НИ - толстые линии}{WW ~ толстые линии}{WW - тонкие линии}{-f+++ - клетка горизонтальная}{хххх - клетка диагональная}{+ + + - клетка редкая}{.

. . . -точки редкие}{- точ ки частые}{стиль, определенный программистом}3. Процедура SetFillPattern (:FillPatternType; color:word) - устанавли­вает пользовательский образец fillPatern и цвет color штриховки. Образецштриховки задают с помощью переменной специального типа:Туре FillPatternType = array[L. 8J of byte;...Переменная этого типа определяет квадрат 8x8 точек, где биту, установ­ленному в 1, соответствует точка заданного цвета, а биту, установленному вО - точка цвета фона.Например:Const Р J .'FillPatternType = ($АА, $55, $АА, $55, $АА, $55, $АА, $55);Р1 определяет квадрат 8x8 точек следующего вида:10 10 10 100 10 10 10 110 10 10 100 10 10 10 110 10 10 100 10 10 10 110 10 10 100 10 10 10 1На экране при штриховке данным стилем мы будем видеть частые ромбы.4.

Процедура FloodFill(x, у, color: word) - закрашивает текущим образ­цом и цветом закраски, установленными процедурой SetFiIlStyle, область,273Часть 1. Основы алгоритмизации и процедурное программированиеограниченную контуром цвета color, внутри которой находится точка с коор­динатами (х,у). Если контур не замкнут, то будет закрашен весь экран.Процедуры и функции рисования. Модуль Graph предоставляет про­граммисту большой набор процедур и функций, рисующих различные при­митивы (простейшие фигуры, размеры и местоположение которых опреде­ляются параметрами).1.

Процедура PutPixelfx, у, color: word) - рисует точку цветом, опреде­ленным в регистре палитры с номером color, в точке экрана с координатами(X, у).2. Функция GetPixel(x,y:word):word - возвращает номер регистра пали­тры, определяющего цвет точки с указанными координатами.3. Функция MoveTo(x,y:word):word- задает положение текущей точки точки, используемой в качестве исходной при рисовании линий или выводетекста.4.

Процедура MoveRel(dx,dy:word) - задает положение текущей точкиотносительно ее предыдущего положения.5. Функции GetX:word и G^/K*>v^rrf-возвращают соответственно коор­динаты X и у текущей точки.6. Функции GetMaxX:word и GetMaxY:word - возвращают соответст­венно максимальные размеры экрана в точках для текущего режима.7. Процедура Line(xlyyl,x2,y2:word) - рисует линию из точки (х1,у1) вточку (х2,у2).8. Процедура LineTo(x,y:word) - рисует линию из текущей точки в точ­ку (х,у).9. Процедура LineRel(dXydy:word) - рисует линию из текущей точки вточку, отстоящую от текущей на dx,dy.10.

Процедура Rectangle(xl,yl,x2,y2:word) - рисует прямоугольник покоординатам левого верхнего и правого нижнего углов.11. Процедура Bar(xlyyl,x2,y2:word) - рисует заштрихованный прямо­угольник с заданными координатами текущим цветом и закрашивает его те­кущим образцом закраски.12. Процедура Bar3D(xl,yl,x2,y2,depth:word; top: boolean) - рисует па­раллелепипед, у которого: размер передней грани определяется координата­ми х1, у 1, х2, у2; глубина depth обычно задается равной 25% ширины, а па­раметр top определяет, рисовать ли верхнюю грань (да, если true, и нет, еслиfalse). Верхнюю грань не рисуют, если необходимо изобразить несколько па­раллелепипедов, стоящих друг на друге. Передняя грань закрашивается теку­щим образцом и цветом закраски.13. Процедура DrawPoly(numPoints:word; var PolyPolnts) - рисует лома­ную линию. Первый параметр определяет количество вершин ломаной, авторой - координаты этих вершин в массиве элементов специального типаPointType:2748.

Управление техническими средствами и взаимодействие с MS DOSType PointType = recordx,y:word;end;...Например:Var MP:array[5] of PointType; {объявление массива координат точек}DrawPoly(5,MP);{рисуем ломаную линию}14. Процедура FillPoly (numPoints:word; Var PolyPoints) - рисует закра­шенный многоугольник с указанными вершинами.15.

Процедура Circle (х, у, radius:word) - рисует окружность заданногорадиуса radius с центром в точке (х, у).16. Процедура Л ГС (х,уу stangle, endangle, radius: word) - рисует дугу ок­ружности указанного радиуса radius от угла stangle до угла endangle. Углы отсчитываются от положительного направления оси абсцисс против часовойстрелки и указываются в градусах.Существует специальная процедура, которая позволяет определить ко­ординаты концов дуги.17. Процедура GetArcCoord (Var ArcCoo:ArcCoordType) - возвращаеткоординаты концов дуги через параметр-переменную специального типаArcCoordType, который описан следующим образом:Туре ArcCoordType = recordх,у{центр дуги}xstart, ystart, {начало дуги}xend, yend:word {конец дуги}end;Например, нарисуем дугу и соединим ее концы:Var ArcCoords: ArcCoordType;ArcfJOO, 100, О, 270, 30); {рисуем дугу}GetArcCoords(ArcCoords); {определяет координаты концов дуги}with ArcCoords doLinefXstart, Ystart, Xend, Yend); {рисуем соединяющую линию}18.

Характеристики

Тип файла
PDF-файл
Размер
13,06 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6353
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее