Вы находитесь на странице: 1из 15

МОДУЛЬ GRAPH

В PASCAL ABC
ВЫПОЛНИЛИ: УЛЫБИНА М.А., КАШИНА В.А.
С624
ЧТО ТАКОЕ МОДУЛЬ GRAPH?

В модуле Graph (GRAPH.TPU) находится библиотека, состоящая из более чем


50 графических подпрограмм от побитовых до подпрограмм высокого уровня.
Все что позволяет делать модуль Crt на самом деле является псевдографикой,
т.к. изображение формируется из символов (букв, цифр, кавычек и др.) в
текстовом режиме.
Когда экран монитора работает в графическом режиме, то изображение на
нем формируется из точек (пикселей), а не символов. Точка намного меньше
символа, и, следовательно, на экране точек разместится куда больше, чем
знакомест в текстовом режиме. Поэтому, несмотря на то, что система
координат начинается также в левом верхнем углу, максимальные значения
по двум осям намного больше, чем при работе с модулем Crt, и зависит от
разрешения экрана. Отсчет в данном случае начинается с нуля.
ПРОЦЕДУРЫ И ФУНКЦИИ
procedure SetPixel (x, y, color: Закрашивает один пиксел
integer); с координатами (x, y) цветом color.
procedure MoveTo (x, y: integer); Передвигает невидимое перо
к точке с координатами (x, y); эта
функция работает в паре с функцией
LineTo (x, y).
procedure LineTo (x, y: integer); Рисует отрезок от текущего
положения пера до точки (x, y);
координаты пера при этом также
становятся равными (x, y).
procedure Line (x1,y1,x2,y2: integer); Рисует отрезок с началом
в точке (x1,y1) и концом
в точке (x2,y2).
procedure Circle (x, y, r: integer); Рисует окружность с центром
в точке (x, y) и радиусом r.
procedure Ellipse (x1,y1,x2,y2: Рисует эллипс, заданный своим
integer); описанным прямоугольником
с координатами противоположных
вершин (x1,y1) и (x2,y2).
ПРОЦЕДУРЫ И ФУНКЦИИ
procedure Rectangle (x1,y1,x2,y2: Рисует прямоугольник, заданный
integer); координатами противоположных
вершин (x1,y1) и (x2,y2).
procedure RoundRect (x1,y1,x2,y2,w, Рисует прямоугольник
h: integer); со скругленными краями; (x1,y1)
и (x2,y2) задают пару
противоположных вершин, а w и
h — ширину и высоту эллипса,
используемого для скругления
краев.
procedure Arc (x, y, r, a1, a2: integer); Рисует дугу окружности с центром
в точке (x, y) и радиусом r,
заключенной между двумя лучами,
образующими углы a1 и a2
с осью OX (a1 и a2 — вещественные,
задаются в градусах
и отсчитываются против часовой
стрелки).
ПРОЦЕДУРЫ И ФУНКЦИИ
procedure Pie (x, y, r, a1, a2: integer); Рисует сектор окружности,
ограниченный дугой (параметры
процедуры имеют тот же смысл, что
и в процедуре Arc).
procedure Chord (x, y, r, a1, a2: Рисует фигуру, ограниченную дугой
integer); окружности и отрезком,
соединяющим ее концы (параметры
процедуры имеют тот же смысл, что
и в процедуре Arc).
procedure TextOut (x, y: integer; Выводит строку s в позицию (x,
s: string); y) (точка (x, y) задает верхний левый
угол прямоугольника, который будет
содержать текст из строки s).
procedure FloodFill (x, y, color: Заливает область одного цвета
integer); цветом color, начиная с точки (x, y).
procedure FillRect (x1,y1,x2,y2: Заливает прямоугольник, заданный
integer); координатами противоположных
вершин (x1,y1) и (x2,y2), цветом
текущей кисти.
ПРОЦЕДУРЫ И ФУНКЦИИ
procedure Polygon (var a; n: integer); Строит ломаную по n точкам,
координаты которых заданы
в массиве a элементов типа Point.
procedure Polyline (var a; n: integer); Строит замкнутую ломаную
по n точкам, координаты которых
заданы в массиве a элементов типа
Point.
function GetPixel (x, y): integer; Возвращает текущее значение цвета
для пиксела с координатами (x, y).
ЦВЕТОВЫЕ КОНСТАНТЫ И ФУНКЦИИ
ДЛЯ РАБОТЫ С ЦВЕТОМ

Модуль GraphABC содержит константы и функции для работы с цветами.


Тип ColorType, описывающий цвет, определен следующим образом:
type ColorType=integer;

clBlack — черный clAqua — бирюзовый


clPurple — фиолетовый clOlive — оливковый
clWhite — белый clFuchsia — сиреневый
clMaroon — темно-красный clTeal — сине-зеленый
clRed — красный clGray — темно-серый
clNavy — темно-синий clLime — ярко-зеленый
clGreen — зеленый clMoneyGreen — цвет зеленых
clBrown — коричневый денег
clBlue — синий clLtGray — светло-серый
clSkyBlue — голубой clDkGray — темно-серый
clYellow — желтый clMedGray — серый
clCream — кремовый clSilver — серебряный
ФУНКЦИИ ДЛЯ РАБОТЫ С
ЦВЕТАМИ
Для работы с цветами используются следующие функции.
• function RGB (r, g, b: integer): ColorType;
Возвращает целое значение, являющееся кодом цвета, который содержит
красную, зеленую и синюю составляющие с интенсивностями r, g
и b соответственно (r, g и b — целые в диапазоне от 0 до 255, причем, 0
соответствует минимальной интенсивности, 255 — максимальной).
• function GetRed (color: ColorType): integer;
Выделяет красную составляющую из цвета color (целое в диапазоне от 0 до 255);
• function GetGreen (color: ColorType): integer;
Выделяет зеленую составляющую из цвета color (целое в диапазоне от 0 до 255);
• function GetBlue (color: ColorType): integer;
Выделяет синюю составляющую из цвета color (целое в диапазоне от 0 до 255).
ДЕЙСТВИЯ С ПЕРОМ
Функция/процедура Назначение
function PenX: integer; Возвращают текущие
function PenY: integer; координаты пера.

procedure SetPenColor (color: Устанавливает цвет пера,


integer); задаваемый параметром color.

procedure SetPenWidth (w: Устанавливает ширину пера,


integer); равную w пикселам.

procedure SetPenStyle (ps: Устанавливает стиль пера,


integer); задаваемый параметром ps.
ДЕЙСТВИЯ СО ШРИФТОМ
Функция/процедура Назначение
procedure SetFontColor (color: Устанавливает цвет шрифта.
integer);
function FontColor: integer; Возвращает текущий цвет шрифта.
procedure SetFontSize (sz: integer); Устанавливает размер шрифта
в пунктах.
procedure SetFontName (name: string) Устанавливает наименование
; шрифта.
procedure SetFontStyle (fs: integer); Устанавливает стиль шрифта.
function TextWidth (s: string): integer; Возвращает ширину строки
s в пикселях при текущих настройках
шрифта.
function TextHeight (s: string): integer; Возвращает высоту строки
s в пикселях при текущих настройках
шрифта.
ДЕЙСТВИЯ С РИСУНКАМИ
Функция/процедура Назначение
procedure SavePicture (n: integer; Сохраняет рисунок с описателем
fname: string); n в файл с именем fname. Рисунки
можно сохранять в формате .bmp, .jpg
или .gif.
procedure DrawPicture (n, x, y: integer); Выводит рисунок с описателем
n в позицию (x, y) графического окна.
procedure SetPictureSize (n, w, h: integer); Устанавливает размер рисунка
с описателем n равным w на
h пикселей.
function CreatePicture (w, h: integer): Создает рисунок ширины w и высоты
integer; h и возвращает его описатель.
procedure FlipPictureHorizontal (n); Зеркально отображает картинку
с описателем n относительно
горизонтальной оси симметрии.
procedure FlipPictureVertical (n); Зеркально отображает картинку
с описателем n относительно
вертикальной оси симметрии.
ДЕЙСТВИЯ С ГРАФИЧЕСКИМ
ОКНОМ
Функция/процедура Назначение
procedure ClearWindow; Очищает графическое окно белым
цветом.

procedure ClearWindow (c: Очищает графическое окно цветом


ColorType); c.

procedure SetWindowWidth (w: Устанавливает ширину


integer); графического окна.

procedure SetWindowHeight (h: Устанавливает высоту графического


integer); окна.

procedure CloseWindow; Закрывает графическое окно.


procedure CenterWindow; Центрирует графическое окно
по центру экрана.
ДЕЙСТВИЯ С КИСТЬЮ
Функция/процедура Назначение
procedure SetBrushColor (color: Устанавливает цвет кисти,
integer); задаваемый параметром color.
procedure SetBrushPicture (fnam Устанавливает в качестве
e: string); образца для закраски кистью
образец, хранящийся в файле
fname, при этом текущий цвет
кисти при закраске
игнорируется.
procedure ClearBrushPicture; Очищает рисунок-образец,
выбранный для кисти.
procedure SetBrushStyle (bs: Устанавливает стиль кисти,
integer); задаваемый параметром bs.
ПРИМЕРЫ ПРОГРАММ С
ИСПОЛЬЗОВАНИЕМ МОДУЛЯ GRAPH
Program Figurka;
uses GraphABC;
begin
SetWindowSize(500, 500); //задаем размер графического окна
SetPenWidth(3); //устанавливаем стиль пера
SetBrushColor(clFuchsia); //устанавливаем цвет кисти
Circle(225,160,50); //рисуем окружность
Line(225,160,225,180); //рисуем линии
Line( 210,190,240,190);
Line( 225,210,225,250);
Line( 100,100,200,260);
Line( 200,260,400,260);
Line( 210,350,200,480);
Line(240,350,250,480);
Rectangle(200,230,250,350); //рисуем прямоугольник
SetBrushColor(clLime);
FillRect(0, 480,500,500); //рисуем закрашенный прямоугольник
SetBrushColor(clWhite);
Circle(205,150,10);
Circle(245,150,10);
end.
ПРИМЕРЫ ПРОГРАММ С
ИСПОЛЬЗОВАНИЕМ МОДУЛЯ GRAPH
Program domik_2; Line(125,25,170,75);
uses GraphABC; FloodFill(125, 30,clYellow);
begin {Крона дерева}
SetWindowSize(500, 500); SetPenColor(clGreen);
{Коричневая стена} SetBrushColor(clGreen);
SetPenWidth(2); Ellipse(100,150,150,200);
SetBrushColor(clBrown); {ствол дерева}
FillRect(100,50,150,100); SetBrushColor(clBrown);
{Крыша желтого цвета} FillRect(120,200,130,230);
SetPenColor(clBrown); end.
Line(125,25,80,75);