Скачиваний:
54
Добавлен:
02.05.2014
Размер:
601.05 Кб
Скачать

28

Рис. 2

9 ЗАДАНИЯ

ВАРИАНТ 1

1.Начертите на экране 10 вложенных друг в друга прямоугольников.

2.С помощью динамической переменной осуществите перемещение заполненного синим цветом эллипса вертикально.

ВАРИАНТ 2

1.Вывести на экран горизонтальные толстые линии с двоичным представлением:

1111000001100000 1111000011110000 0111101111011110

1100110011001100 1001100110011001 1111100011111000

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

ВАРИАНТ 3

1.Постройте рамку цвета LightCyan по краям экрана с помощью процедуры

Line.

2.С помощью динамической переменной осуществите перемещение окружности произвольного цвета по диагонали.

ВАРИАНТ 4

1.Нарисуйте круг цвета произвольного радиуса, закрасив цветом Cyan все, что лежит все этого круга.

2.С помощью динамической переменной осуществите перемещение красного прямоугольника с желтым цветом ободка вертикально.

29

ВАРИАНТ 5

1.В центре экрана нарисуйте эллипс, закрашенный цветом LightGreen, всю остальную площадь экрана сделайте фиолетовой.

2.С помощью динамической переменной выведите в верхней части экрана текст “Изучайте Паскаль ”, движущийся горизонтально.

ВАРИАНТ 6

1.Находясь в графическом режиме, присвойте двум переменным целые значения, сложите их и выведите результат в центр экрана. Так как вывести число в графике нельзя, преобразуйте результат в строку отдельной пользовательской функцией. Используйте процедуру Str.

2.С помощью динамической переменной осуществите перемещение закрашенного любым цветом сектора круга по диагонали.

ВАРИАНТ 7

1. Вывести на экран вертикальные толстые линии с двоичным представлением: 0101010101010101 1100011000110001 1111110011111100 0111011101110111 1110001110001110 1111000000001111

2.С помощью динамической переменной выведите текст “Изучайте Паскаль”, движущийся вертикально сверху вниз.

ВАРИАНТ 8

1.Создайте на экране окно и заполните его случайными окружностями.

2.С помощью динамической переменной выведите текст “Изучайте Паскаль”,

движущийся вертикально снизу вверх.

ВАРИАНТ 9

1.Выведите на экран “звездное небо “, а затем погасите его. Количество “звезд” установите произвольно.

2.С помощью динамической переменной осуществите перемещение красного сектора эллипса, движущегося горизонтально.

ВАРИАНТ 10

1.Смоделируйте на экране 7 вертикальных цветных полос настройки телевизора, заполненных пикселами разного цвета.

2.С помощью динамической переменной осуществите одновременное движение двух окружностей по горизонтали.

ВАРИАНТ 11

1.Создайте аналог электронного секундомера, выводящего цифры от 0 до 59 растровым шрифтом большого размера в центре прямоугольника. Секундомер запускается нажатием клавиши Enter.

2.С помощью динамической переменной осуществите движение закрашенного желтого прямоугольника по горизонтали, на котором помещена фраза “Изучайте Паскаль”.

ВАРИАНТ 12

30

1.Разметьте экран на три области: заголовочную, диалогов, подсказки. Для рамок используйте цвет Yellow. Соответственно выведите сообщения: "Заголовок", "Рабочая область", "Подсказка" цветом LightCyan. Центральную часть, исключая рамку, оформите как окно с фоном Cyan и заполните его 30000 точек случайного цвета. Для очистки и установки фона графического окна используйте процедуру Ваr.

2.С помощью динамической переменной осуществите перемещение одной окружности вниз, другой – направо.

ВАРИАНТ 13

1.Заданы пять значений количества заболевших гриппом в группе за послед-

ние 5 лет: 12(1999), 30(2000), 11(2001), 21(2002), 4(2003). С помощью проце-

дуры Bar3D постройте диаграмму, отражающую динамику (в высоте столбца) заболеваемости. Под каждым столбцом укажите год. Исходные данные опишите в типизированном массиве.

2.Построить движущиеся изображения двух прямоугольников и круга, на каждом из которых помещены слова из фразы “ КТО СКАЗАЛ МЯУ? ”

ВАРИАНТ 14

1.Написать программу, которая выводит на экран меню, в котором в зависимости от выбора пользователя появляется круг, квадрат или треугольник.

2.Напишите программу, которая в зависимости от кода нажатой клавиши (используйте клавиши перемещения курсора) управляет движением фигуры человечка (вверх, вниз, влево, вправо). Образ человечка занесите в память.

ВАРИАНТ 15

1.Выведите разными шрифтами и размерами свое имя с указанием значений параметров номера и размера шрифта.

2.Создайте картину: перемещение машины (прямоугольника ) белого цвета на фоне облаков (эллипсов) голубого, ярко-синего, ярко-серого цветов.

10 КОНТРОЛЬНЫЕ ВОПРОСЫ

1.За счет каких элементов компьютера обеспечивается аппаратная поддержка графики?

2.Каково назначение графических драйверов?

3.Каково назначение стандартного библиотечного модуля GRAPH?

4.Как запустить графическую систему?

5.Каково назначение процедуры InitGraph и ее параметров?

6.Как перейти в текстовый режим и обратно?

7.Как закрыть графический режим?

8.Какие стандартные функции можно использовать для своевременного обнаружения и нейтрализации ошибок в графическом режиме?

9.Какую роль выполняет в графическом режиме невидимый текущий указатель СР (Current Pointer)? Как его переместить?

10.Что такое окно? Как создать окно в графическом режиме? Как установить фон графического окна?

31

11.Какие процедуры используются для работы с графическим примитивом — точкой?

12.Какие процедуры используются для работы с графическим примитивом — линией?

13.Какие процедуры используются для вывода текста в графическом режиме? Каковы особенности вывода численных данных в графическом режиме?

14.Каково отличие растровых и векторных шрифтов? Как установить шрифт, задать его размер, ориентацию?

15.Как можно получить информацию о текущей палитре? Как задать цвет фона, рисунка? Как изменить всю палитру?

16.Какие процедуры используются при рисовании прямоугольников и многоугольников?

17.Опишите полярную систему координат. Какие стандартные процедуры используются при рисовании окружностей, дуг, эллипсов, секторов?

18.Какие процедуры используются для установки цвета и стиля геометрических фигур?

11 ТРЕБОВАНИЯ К ОФОРМЛЕНИЮ ОТЧЕТА

Отчет по лабораторной работе должен содержать:

Название университета, факультета, кафедры;

Название работы;

Сведения о студенте (Ф.И.О., группа) и о преподавателе (Ф.И.О.);

Дата выполнения лабораторной работы;

Цель работы;

Постановку задачи (варианты заданий);

Результаты выполнения заданий работы (экранные копии);

Выводы по лабораторной работе.

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

ПРИЛОЖЕНИЕ

Процедуры управления графическим режимом

CloseGraph; - останавливает работу графической системы.

DetectGraph (var Driver, Mode: integer); - проверяет наличие соответствую-

щих аппаратных средств и определяет, какой графический режим и драйвер следует использовать.

GetModeRange (GraphDriver: integer; var LoMode, HiMode: integer); - для данного драйвера возвращает наименьший и наибольший номер графического режима.

32

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

InitGraph (var GrDriver:integer; var Mode:integer; Path:string); - инициали-

зирует графическую систему и переводит аппаратуру в графический режим. RestoreCrtMode; - возвращение в текстовый режим.

SetGraphBufSize (BufSize:word); - изменение размера графического буфера. SetGraphMode (Mode:integer); - устанавливает для системы графический режим и очищает экран.

Функции управления графическим режимом

GetGraphMode: integer; - получение номера текущего графического режима. GetMaxMode: word; - возвращает для текущего загруженного драйвера максимальное значение номера режима.

GetModeName (Mode: integer): string; - возвращает строку, содержащую имя заданного графического режима Mode.

GraphErrorMsg (ErrorCode: integer): string; - для заданного кода ошибки (ErrorCode) возвращает строку сообщения об ошибке.

GraphResult: integer; - получение кода ошибки.

GetDriverName: string; - получение имени текущего драйвера.

InstallUserDriver (Name: string; AutoDetectPtr: pointer): integer; - включает в таблицу драйверов устройств BGI фирмы Borland драйверы, поставляемые другими фирмами

InstallUserFont (Name: String): integer; - устанавливает новый шрифт, не пре-

дусмотренный в системе фирмы Borland (BGI).

RegisterBGIdriver (Driver: pointer): integer; - регистрирует в графической системе загруженный пользователем или скомпонованный с программой драйвер формата BGI (формат фирмы Borland).

RegisterBGIfont (Font: pointer): integer; - регистрирует загружаемый пользо-

вателем или скомпонованный с программой шрифт формата BGI (фирмы Borland) в графической системе. В случае ошибки возвращаемое значение будет меньше 0. В противном случае возвращается внутренний номер шрифта.

Процедуры управления экраном, окном, страницей

ClearDevice; - очистка графического экрана. ClearViewPort; - очищает текущую область просмотра (окно).

GetAspectRatio (var Xk, Yk: word); - возвращает действующую разрешающую способность графического экрана, с помощью которого можно вычислить коэффициент относительного удлинения (Xk,Yk).

GetViewSettings (var ViewPort: ViewPortType); - получение параметров теку-

щего графического окна.

33

SetActivePage (Page: word); - устанавливает для графического вывода активную страницу. Страница, заданная параметром Page, становится активной. Весь графический вывод будет теперь направляться в эту страницу.

SetAspectRatio (Xasp, Yasp: word); - изменяет принятое по умолчанию значение коэффициента относительного удлинения.

SetViewPort (XI, Yl, X2, Y2: word; Clip: boolean); - задание размеров окна.

SetVisualPage (Page: word); - задание отображаемой на экране страницы.

Процедуры управления цветом и палитрой

GetDefaultPalette (var Palette: PaletteType): PaletteType; - возвращает запись описания палитры типа PaletteType, содержащую палитру Palette, которая инициализирована драйвером при вызове процедуры InitGraph.

GetPalette (var Palette: PaletteType); - возвращает текущую палитру Palette и

ее размер.

SetAllPalette (var Palette); - изменяет все цвета палитры на указанные. Параметр Palette является нетипизованным параметром. Первое его слово представляет собой длину палитры. Следующие n байт заменяют текущие цвета палитры. Каждый цвет может принимать значение от -1 до 15. Значение -1 не изменяет предыдущее значение записи.

SetBkColor (Color: word); - используя палитру, устанавливает текущий фоновый цвет.

SetColor (Color: word); - используя палитру, устанавливает текущий цвет рисунка согласно значению параметра Color.

SetPalette (N: Word; Color: shortint); - изменяет один из цветов палитры в со-

ответствии с параметрами N (номер цвета) и Color (цвет).

SetRGBPalette (N, RedValue, GreenValue, BlueValue: integer); - позволяет из-

менить записи палитры для драйверов IBM 8514 и VGA.

Параметр N задает запись палитры, которую нужно загрузить, a RedValue, GreenValue и BlueValue — цвета, составляющие запись палитры. Процедура SetRGBPalette может использоваться только при наличии графического адаптера VGA и драйвера IBM 8514.

Функции управления цветом и палитрой

GetBkColor: word; - возвращает текущее значение фонового цвета.

GetColor: word; - возвращает текущее значение основного цвета, установленное при предыдущем успешном обращении к процедуре SetColor. GetMaxColor: word; - возвращает наибольшее значение цвета, которое можно передать процедуре SetColor.

GetPaletteSize: integer; - возвращает размер таблицы палитры цветов. Данная функция показывает, сколько записей палитры можно задать для текущего графического режима. Например, при использовании цветного режима и адаптера EGA функция возвратит значение 16.

Функции работы с точками

34

GetMaxX: integer; - возвращает для текущего графического режима и драйвера координату самого правого столбца (разрешение по X).

GetMaxY: integer; - возвращает для текущего графического режима и драйвера координату самой нижней строки (разрешение по Y).

GetPixel (X, Y: integer): word; - получает значение цвета элемента изображения в точке X,Y.

GetX: integer; - получение координаты X текущей позиции на экране. GetY: integer; - получение координаты Y текущей позиции на экране.

Процедуры работы с точками

PutPixel (X, Y: integer; Pixel: word); - строит элемент изображения в точке

(X,Y), цвет которой определяется параметром Pixel.

Процедуры работы с линиями

GetLineSettings (var Linelnfo: LineSettingsType); - возвращает текущий стиль,

образец и толщину линии, установленные процедурой SetLineStyle.

Line (XI, Yl, X2, Y2: integer); - рисует прямую линию из точки (X1,Y1) в точку (X2,Y2), толщина и тип которой задаются процедурой SetLineStyle, а цвет устанавливается процедурой SetColor. Текущий указатель своего положения не изменяет.

LineRel (dX,dY: integer); - проводит прямую в точку, заданную относительным расстоянием (Dx,Dy) от текущего указателя.

LineTo (X, Y: Integer); - Рисует прямую линию из точки, в которой находится текущий указатель, в точку (X,Y). Толщина и тип линии задаются процедурой SetLineStyle, а цвет устанавливается процедурой SetColor. Текущий указатель перемещается в конечную точку.

MoveRel (dX, dY: integer); - перемещает текущий указатель на расстояние, заданное относительными координатами от его текущей позиции.

MoveTo (X, Y: integer); - перемещает текущий графический указатель в точку

(X,Y).

SetLineStyle (SType:word; Pattern: word; S: word); - устанавливает текущую толщину S и тип линии SType.

SetWriteMode (Mode: integer); - устанавливает режим записи Mode при вычерчивании линии.

Процедуры построения фигур из линий

Ваr(Х1, Yl, X2, Y2: integer) - рисует столбец, заданный координатами (XI,Y1) и (X2,Y2), используя стандартный тип и цвет закраски.

Bar3D (XI, Yl, X2, Y2: integer; L: word; S: boolean); - используя текущий тип и цвет закраски, рисует трехмерный параллелепипед (столбец), заданный координатами (X1,Y1), (X2,Y2) и глубиной L. S — признак отображения верхней плоскости.

35

DrawPoly (N : word; var S); - используя текущий тип линии и текущий цвет, рисует контур многоугольника. Параметр S является нетипизованным параметром, который содержит координаты каждого пересечения в многоугольнике. Параметр N задает число координат в S. Координата состоит из двух слов: значения Х и значения У.

FillPoly (N : word; var S); - рисует закрашенный многоугольник.

Параметр S является нетипизованным параметром, который содержит координаты каждого пересечения сторон в многоугольнике (координаты вершин). Параметр N задает число координат в S. Координата состоит из двух слов: значения X и значения Y.

FloodFill (X, Y: integer; S: word); - закрашивает ограниченную область, используя текущий заполнитель. Точка (X,Y) является произвольной внутренней точкой заполняемой области. Для заполнения области, ограниченной цветом, которую определяет параметр S, используется текущий образец закраски.

GetFillPattern (var Pattern: FiUPatternType); - возвращает текущий образец заполнителя, заданный последним обращением к процедуре SetFillPattern. Параметр Pattern — это образец заполнителя.

GetFillSetings (var Inf: FillSettingsType); - позволяет выдавать запрос о теку-

щем типе заполнителя и его цвете, которые установлены процедурами SetFillStyl или SetFillPattern.

Rectangle (XI, Yl, X2, Y2: integer); - рисует прямоугольник, используя текущий цвет и тип линии. Точка с координатами (X1, Y1) определяет верхний левый угол прямоугольника, а точка с координатами (X2,Y2) определяет нижний пра-

вый угол (0 <= X1 < Х2 <= GetMaxX и 0 <= Yl< Y2 <= GetMaxY).

SetFillPattern (Pattern:FfflPatternType; Color: word); - выбирает заданный пользователем образец закраски.

SetFillStyle (Pattern: word; Color: word); - устанавливает тип закраски и ее цвет.

Процедуры построения криволинейных фигур

Arc(X, Y: integer; Angle1, Angle2, R: Word) - вычерчивает дугу окружности от начального угла Angle1 до конечного угла Angle2 с радиусом R, точка (X,Y) используется как центр окружности.

Circle (X, Y: integer; R: word); - рисует окружность с радиусом R, точка (X,Y) считается центром окружности

Ellipse (X, Y: integer; SStart, SEnd: word; RadX, RadY: word); - рисует эллип-

тическую дугу от начального угла SStart до конечного угла SEnd, используя (X,Y) в качестве точки центра, а RadX, RadY - как горизонтальную и вертикальную оси.

FillEllipse (X, Y: integer; XRad, YRad: word); - рисует закрашенный эллипс,

используя точку с координатами (X,Y) в качестве центра, a XRad и YRad - в качестве горизонтальной и вертикальной осей.

GetArcCoords(var Coords: ArcCoordsType); - получение координат последней дуги.

36

PieSlice (X, Y: integer; SStart, SEnd, R:word); - рисует и заполняет цветом сек-

тор круга. Точка (X,Y) при этом используется в качестве центра окружности, а сектор рисуется от начального угла (SStart) до конечного угла (Send) с радиусом R.

Sector (X, Y: integer; SStart, SEnd, XRad, YRad: word); - вычерчивает и за-

полняет эллиптический сектор. Процедура использует (X,Y) как точку центра, параметры XRad, YRad определяют, соответственно, горизонтальный и вертикальный радиусы. Сектор вычерчивается от начального угла SStart до конечного угла SEnd. Сектор рисуется текущим цветом и закрашивается с использованием образца закраски и цвета, заданных с помощью процедур SetFillStyle или

SetFillPattern.

Процедуры работы с текстом

GetTextSettings (var Textlnfo: TextSettingsType); - возвращает текущий тип текстового шрифта, его направление, размер и выравнивание, установленные с помощью процедур SetTextStyle и SetTextJustify.

OutText (TextString: String); - вывод последовательности символов в то место, в котором находится текущий указатель.

OutTextXY (X, Y: integer; S: string); - вывод последовательности символов в точке (Х, У). Если строка слишком длинная и выходит за пределы экрана или текущей области просмотра, то она усекается.

SetTextJustify (Goriz, Vert: word); - устанавливает значения выравнивания текста, которые используются процедурами OutText и OutTextXY.

SetTextStyle (Font: word; S: word; Size: CharSizeType); - устанавливает теку-

щий шрифт Font, тип S и коэффициент размера символа Size. Процедура влияет на весь текстовый вывод, выполняемый процедурами OutText и OutTextXY.

SetUserCharSize (MultX, DivX, MultY, DivY: word); - позволяет пользователю изменять высоту и ширину символа для векторных шрифтов. Параметр MultX: DivX представляет собой отношение, умноженное для активного шрифта на обычную ширину. MultY: DivY — это отношение, умноженное для активного шрифта на нормальную высоту. Например, чтобы сделать шрифт вдвое выше, используйте для MultX значение 2, a DivX задайте равным 1 (2divl = 2).

Функции работы с текстом

TextHeight (S: string): word; - получение высоты строки в пикселях. TextWidth (S: string): word; - получение ширины строки в пикселях.

Процедуры обмена с памятью

GetImage (XI, Yl, X2, Y2: integer; var bitmap); - сохраняет в буфере двоичный образ заданной области экрана. Параметры XI, Yl, X2, Y2 определяют прямоугольную область экрана. Параметр ВArray (битовый массив) является нетипизованным параметром, который должен быть больше или равен 4, плюс размер памяти, отведенный для области экрана. Первые два слова параметра BitMap

Соседние файлы в папке Методичка - Borland Pascal 7.0