Как написать графическую программу на паскале

Урок 19. Графические возможности языка программирования.

  • Придумываем какой-нибудь рисунок.
  • Подробно разбираем то, каким он у нас будет и описываем действия, которые нужно над ним произвести, что бы добиться желаемого результата.
  • Пишем программу и объясняем все оговоренные моменты.
  • Вводим новые команды:
  • FloodFill (x, y, color) — Заливает область одного цвета цветом color, начиная с точки (x, y).
  • SetBrushColor (color) — Устанавливает цвет кисти, задаваемый параметром color.
  • TextOut (x, y, text) — Выводит Text на экран. Начало текста в точке с координатами (x, y).
  • Нужно показать и объяснить как работают все эти новые команды.
  • Для закрепления изученного материала выполнить такой же рисунок самостоятельно.
  • Рефлексия.
  • Выучить команды и их характеристики (наизусть).
  • Повторить команды библиотеки GraphABC изученные на предыдущем уроке.
  • Придумать рисунок, в котором будут все изученные нами команды графической библиотеки и записать программу в тетрадь.

Источник: videouroki.net

Pascal. Работа с графикой (Ellipse, rectangle, circle, textout)

Как написать графическую программу на паскале

Для работы с графикой из программы на Паскале в папке, откуда она запускается, должен присутствовать файл egavga.bgi. Он представляет собой графический драйвер, предназначенный для управления видеопамятью в режимах поддержки мониторов типов EGA и VGA . Разумеется, современные мониторы давно «переросли» эти два исторически распространенных класса дисплеев. Однако, на любом современном компьютере поддержка видеорежимов EGA и VGA по-прежнему возможна, если не напрямую, то через специальную программу-эмулятор (см. конец главы).

В поставку Паскаля могут входить и другие файлы с расширением *.bgi, отвечающие за работу с мониторами различных типов.

Кроме того, при компиляции программы, имеющей графический вывод, должен быть доступен модуль graph.tpu, содержащий подпрограммы отрисовки графических объектов.

Библиотека graph.tpu подключается стандартным способом с помощью директивы uses в разделе описаний программ:

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

· координата x — номер пиксела в строке. Нумерация выполняется слева направо, начиная с 0;

· координата y — номер строки пикселов. Нумерация строк производится сверху вниз, начиная с 0.

Таким образом, координаты левого верхнего угла экрана равны (0, 0).

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

Рисуем в среде программирования Pascal

Классический Паскаль поддерживает монитор C GA, имеющий разрешение до 320 3 200 пикселов, монитор EGA с разрешением 640 3 350, монитор VGA с разрешением до 640 3 480. Работу с более современными и мощными графическими устройствами, относящимися к классу superVGA , Паскаль непосредственно не поддерживает, хотя существуют созданные независимыми разработчиками графические драйверы этих режимов.

Графический режим работы экрана кроме количества пикселов характеризуется определенной палитрой — набором видимых цветов. Каждая палитра состоит из 4 цветов для монитора C GA или 16 цветов для EGA и VGA.

Установка графического режима осуществляется путем обращения к процедуре initgraph :

initgraph(var gd:integer, var gm:integer,

Целочисленные переменные gd и gm задают тип графического драйвера и режим его работы, строковая переменная pt — путь к файлу *.bgi. Например, при выборе основного для Паскаля видеорежима VGA с разрешением 640 3 480 пикселов и поддержкой 16 цветов подойдет следующий код:

var gd,gm,error: integer;

if error <> grOk then begin

write (‘ Ошибка графики : ‘,

Так как путь к файлу egavga . bgi указан пустым, предполагается, что он находится в текущей папке. После перехода в графический режим процедурой l ine рисуется линия из левого верхнего в правый нижний угол экрана, затем, после нажатия Enter , графический режим закрывается и происходит выход из программы.

Для автоматического выбора максимально возможного режима переменной gd необходимо присвоить значение detect , при этом переменные gm и pt не определяются, если в текущем каталоге, в котором находится система Турбо Паскаль, имеются файлы *.bgi. Пример:

uses graph; var gd,gm: integer;

Рассмотрим основные стандартные процедуры и функции модуля graph .

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

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

— функция возвращает максимальную координату пиксела по оси x .

— функция возвращает максимальную координату пиксела по оси y .

— процедура устанавливает цвет рисования линий, точек и текста (аналог «пера» в программах для рисования). Цвета кодируются так же, как в текстовом режиме (см. табл. 24.1).

setfillstyle (style: word , color: word );

— процедура устанавливает цвет заполнения областей экрана (параметр color ) и способ наложения цвета (параметр style ). Является аналогом «кисти» в программах для рисования. Параметр color принимает значения, указанные в табл. 24.1, параметр style — значения от 1 до 11. При style=1 происходит сплошное заполнение цветом, другие стили позволяют создать различные штриховки. Здесь и далее вместо цифр можно использовать символические имена стилей, узнать о них можно в справочной системе.

Следующая процедура определяет стиль рисования линий:

setlinestyle (linestyle:word, pattern:word,

Параметр linestyle (стиль линии) принимает значения от 0 до 4, значение 0 соответствует сплошной линии, параметр pattern при использовании готовых стилей со значением linestyle от 0 до 3 игнорируется, толщина линии thickness указывается значением 1 или 3 (в пикселах). Например, оператор setlinestyle (0,0,1); устанавливает стиль сплошной тонкой линии, а setlinestyle (1,0,3); — толстую пунктирную линию. Для цифровых значений linestyle и thickness в библиотеке также определены символические имена, при значении linestyle=4 можно определить собственный стиль, задав его параметром pattern с помощью битовой маски.

Перейдем к стандартным подпрограммам, связанным с отображением на экране основных графических примитивов.

Читайте также:
Мультиустановщик программ своими руками

— процедура высвечивает на экране пиксел с координатами ( x , y ) цветом color ;

function getpixel (x,y:integer):word;

— функция вернет код цвета пиксела с координатами ( x , y ).

— процедура рисует текущим цветом прямую линию с экранными координатами начала ( x1 , y1 ), и конца ( x2 , y2 ).

— процедура устанавливает текущую позицию рисования (пера, графического курсора) в точку с экранными координатами ( x , y ).

— процедура проводит прямую линию из текущей позиции пера в точку с экранными координатами ( x , y ). Линия проводится текущим цветом пера.

— процедура проводит прямую линию из текущей позиции в точку с приращением координат от текущих на dx и dy , приращения могут быть как положительными так и отрицательными. Таким образом, процедура linerel позволяет указывать, в отличие от line и lineto , не абсолютные, а относительные координаты точки, куда нужно провести линию.

— процедура рисует прямоугольник с координатами левого верхнего угла ( x1 , y1 ) и правого нижнего угла ( x2 , y2 ). Цвет прямоугольника, как и других незакрашенных фигур, определяется установкой, сделанной процедурой setcolor .

— процедура рисует закрашенный прямоугольник с координатами углов ( x1 , y1 ) и ( x2 , y2 ). Цвет и стиль заливки определяются процедурой setfillstyle .

bar3d (x1, y1, x2, y2, depth :integer;

— процедура рисует трехмерный параллелепипед. Параметр depth определяет глубину фигуры по оси x , top указывает, рисовать ли верхнюю грань:

Следующая процедура рисует многоугольник или ломаную линию:

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

var poly: array [1..10] of integer;

Элементы с нечетными номерами массива poly задают x -координаты точек, а с четными — y -координаты. Таким образом, в данном случае нарисован пятиугольник.

— мощная процедура, позволяющая закрасить любую замкнутую область, которой принадлежит точка ( x , y ) и которая ограничена по краям цветом bordercolor .

— несложная процедура рисует окружность с центром в точке с координатами ( x , y ) и радиусом r .

— процедура рисует дугу окружности с центром в точке с координатами ( x , y ), радиусом r , начальным углом sa и конечным углом ea . Углы sa и ea измеряются в градусах и отсчитываются против часовой стрелки от оси абсцисс.

Существуют также процедуры для рисования эллипсов и секторов.

Для вывода текста на графический экран имеются 2 основные функции.

— процедура выводит текст на экран, начиная с точки с координатами ( x , y ). Здесь text — константа или переменная строкового типа, содержащая нужное сообщение. Текст выводится установленным цветом рисования линий. Заметим, что применение стандартных процедур write и writeln для вывода текста в графическом режиме нежелательно, так как они не позиционируют текст по пикселам и не учитывают установок цвета и фона графического экрана.

— процедура выводит текст, заданный параметром, на экран, начиная с текущей позиции графического курсора.

Для краткости мы не рассматриваем методы привязки текста к позициям на экране.

В библиотеке graph нет процедур для вывода численных данных. Для этого необходимо сначала преобразовать число в строку с помощью процедуры str , а затем посредством операции ‘+’ подключить строку к сообщению, выводимому процедурой outtext xy . Например:

Узнать ширину и высоту строки в пикселах можно с помощью стандартных функций function textwidth (s: string): word ; и function textheight ( s : string): word ; соответственно.

Существуют также процедуры для управления внешними графическими шрифтами, хранящимися в файлах *. chr .

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

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

(x1,y1,x2,y2,color :integer; str: string);

centerstring (100, 100, 200, 200, yELLOW,

2. В следующем примере мы нарисуем на экране как «линейный» объект (домик с переменным числом окон и этажей), так и «радиальный» (солнце с лучами), для которого нужен пересчет из декартовых координат в полярные. Схема, поясняющая принцип перевода из декартовых координат в полярные, приведена на рис. 25.1.

Рис. 25.1. Пересчет из декартовых координат в полярные

var Driver, Mode: integer;

writeln (‘Сколько этажей?’); read (N);

writeln (‘Сколько окон на этаж?’);

Driver := VGA; Mode:=VGAHi;

rectangle (20, getmaxy-20-70*n,

line (20, getmaxy-20-70*i,

setfillstyle (solidfill, YELLOW);

for i :=1 To N Do

for j:=1 To K Do begin

FillEllipse (sunx, suny, 30, 30);

repeat until keypressed;

3. Этот пример реализует программу построения графика функции f(x), заданной отдельной подпрограммой, в границах [a, b] изменения аргумента x.

Схема пересчета значений ( x , f ( x )) при в экранные координаты приведена на рис. 25.2. Пересчет выполняется в 2 этапа.

Узнав с помощью процедур getmaxx , getmaxy размеры графического экрана и определив значение xstep — шаг по x , соответствующий одному пикселу на экране, мы сможем обеспечить масштабирование графика по оси X . Для масштабирования по оси Y на первом этапе пересчета требуется также определить максимальное и минимальное значения f ( x ) на интервале [ a , b ] при изменении x с шагом xstep .

Второй этап связан с непосредственным пересчетом значений ( x , f ( x )) в экранные координаты ( cx, cy ). Для решения этой задачи воспользуемся формулой, согласно которой значение x, принадлежащее интервалу [ a , b ], можно линейно преобразовать в значение y, принадлежащее интервалу [c, d ]: . Эта формула позволит получить коэффициенты преобразования величин ( x , f ( x )) к экранным координатам. Дополнительно придется учесть то, что экранная ось Y проведена сверху вниз.

Рис. 25.2. Пересчет из декартовых координат в экранные

f := sin ( x )+ cos ( x );

if IoResult=0 then break

(‘Ошибка! Введено не число’);

if error<>0 then begin

write (‘Не могу инициализировать ‘,

‘ графику ! Ошибка ‘,grapherrormsg(error));

экрана по длине и высоте >

запоминать координаты последней точки,

чтобы соединить ее с текущей >

a:=getreal (‘Левая граница по x=’);

b:=getreal (‘Правая граница по x=’);

if a > b then write (‘Ошибка!Левая граница’,

‘ должна быть меньше правой’);

x:=a; fmax:=f(a); fmin:=fmax;

if fx>fmax then fmax:=fx

str (a:8:3,ss); outtextxy (2,ymax-8, ss);

str (b:8:3,ss); outtextxy

str(fmax:8:3,ss); outtextxy(9,2, ss);

if x>a then line (oldx,oldy,cx,cy);

repeat until keyPressed;

Недостаток этой программы — отсутствие пропорционального масштабирования по осям x и y . Подумайте, как ее можно улучшить. Листинг 12 из Приложения 4 представляет более объемную графическую программу, реализующую несложную компьютерную игру. Функция Draw этого листинга может также служить примером обработки 16-цветного изображения в формате BMP из программы на Паскале.

Решение задач, связанных с выводом графики на экран, часто требует сохранения участка экранного изображения в оперативной памяти с последующим восстановлением прежней картинки. Для решения этой проблемы в библиотеке graph предусмотрен набор соответствующих функций.

Читайте также:
Программа инфоклиника инструкция для администратора

В первую очередь требуется оценить объем памяти, требуемый для сохранения участка экрана. Стандартная функция библиотеки graph , имеющая вид imagesize ( x 1, y 1, x 2, y 2: integer ): word , где x 1, y 1 — экранные координаты верхнего левого, а x 2, y 2 — правого нижнего угла, возвращает число байт памяти, необходимых для сохранения заданной прямоугольной области. Эта функция может определить объем памяти до 64 Кб включительно, так как тип возвращаемого значения — беззнаковое целое типа word . Если количество требуемой памяти больше либо равно 64 Кб, возвращается значение ошибки -11 ( grError ). Разумеется, вызов функции предполагает, что монитор находится в графическом режиме.

После того, как требуемое количество байт определено, программа должна позаботиться о выделении участка оперативной памяти, предназначенного для сохранения изображения. Это легко сделать, используя системную процедуру getmem ( var p : pointer ; size : word ) , где объем памяти size ранее определен функцией imagesize , а переменная p представляет собой указатель.

Ранее незнакомый нам тип данных «указатель» служит для косвенного вызова одних переменных через другие. Фактически, переменная-указатель хранит адрес другой типизированной переменной и может обратиться к ней, используя синтаксис p ^ , где p — имя указателя. Применение указателей позволяет создавать динамические переменные, способные в разные моменты времени адресовать различные участки оперативной памяти, в которых хранятся данные. Самый большой блок памяти, который может выделить getmem , также равен 64 Кб. Освободить ранее занятую память можно процедурой Freemem ( var p : pointer ; size : word ) .

Наконец, третий шаг — сохранить участок экрана, используя только что сформированный в оперативной памяти буфер. Для этой цели достаточно использовать процедуру Getimage ( x 1, y 1, x 2, y 2: integer ; var p ) . Здесь параметры x 1, y 1, x 2, y 2 имеют тот же смысл, что для функции imagesize , а нетипизированный параметр-указатель p получен процедурой getmem .

Теперь требуемый участок экрана сохранен в памяти и может быть занят новым изображением. После того, как изображение выполнило свои функции и нужно восстановить прежний фрагмент экрана, достаточно вызвать процедуру putimage ( x , y : integer ; var p ; mode : word ) , где x , y — экранные координаты левого верхнего угла восстанавливаемой области, p — указатель на сохраненную память, а переменная mode определяет, какая двоичная операция будет использована при выводе изображения на экран. Для неизмененного восстановления изображения следует передавать в качестве mode значение NormalPut , другие возможные значения параметра — copyPut , XORPut , ORPut , ANDput и NOTPut . Все описанные функции использованы в листинге, приведенном ниже. Его изучение поможет вам в написании аналогичных программ, поддерживающих движение по экрану графических объектов.

Источник: nickolay.info

Графика на Pascal. Основные процедуры (команды)

Графика на Pascal

Автор cyber На чтение 9 мин.

В чем заключается вопрос: Как начать работать с графикой на языке Pascal. Основные процедуры(команды).

Сложность: средняя.

Сразу стоит сказать что если вы будите использовать для графики программу PascalABC, то эта статья вам не много не подойдет, за исключение нескольких процедур(команд). Для этой статьи могут использоваться программы Turbo и FreePascal.

Для того чтобы рисовать в Паскале всякие графики, линии, круги и т.д., нужен определенный модуль uses graph, который подключается в самом начале программы:

uses graph; // подключаем модуль для работы с графикой.
Переменные

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

uses graph; // подключаем модуль для работы с графикой.
d, m : integer ;
InitGraph(d, m, ‘путь к файлу EGAVGA . BGI’ );

Не надо сильно думать над этой строкой, она практически всегда одинакова. Но про неё расскажу. Как я и сказал это процедура используется для открытия графического режима. У неё 3 параметра:

  • 1-й : Графический драйвер.
  • 2-й : Режим работы этого драйвера.
  • 3-й : Путь к файлу(графическому драйверу) EGAVGA . BGI
Графический драйвер Константа режима Растр Палитра Число страниц
Имя Значение Имя Значение
Detect Выбор драйвера автоматически
CGA 1 CgaC0 320*200 C0 1
CgaC1 1 320*200 C1 1
CgaC2 2 320*200 C2 1
CgaC3 3 320*200 C3 1
CgaHi 4 640*200 2 цвета 1
MCGA 2 McgaC0 320*200 C0 1
McgaC1 1 320*200 C1 1
McgaC2 2 320*200 C2 1
McgaC3 3 320*200 C3 1
mcgaMed 4 640*200 2 цвета 1
McgaHi 5 640*480 2 цвета 1
EGA 3 EgaLo 640*200 16 цвет. 4
EgaHi 1 640*350 16 цвет. 2
VGA 9 VgaLo 640*200 16 цвет. 2
VgaMed 1 640*350 16 цвет. 2
VgaHi 2 640*480 16 цвет. 1

Файл EGAVGA . BGI лежит у вас папке с программой в папке bgi если его нет, то его можно скачать в интернете и закинуть в папку с программой. Пример:

uses graph; // подключаем модуль для работы с графикой.
d, m : integer ;
InitGraph(d, m, ‘e:programm file FreePascal’);

Вот это стандарт, т.е. написав вот это, только поменяв путь к файлу вы сможете спокойно работать, не думая ни о чем, режим у вас установится автоматически, если вы хотите свой режим то присвойте переменным d и m цифры из таблицы.

InitGraph(d, m, ‘e:programm file FreePascal’);

Если напишете так, будет ошибка:

InitGraph( 9 , 2 , ‘e:programm file FreePascal’);

Ну а дальше осталось только рисовать. В принципе дальше можно не читать всё равно не запомните)). Дальнейший материал поможет вам в решение задач, которые мы вскоре разберем и будем обращаться сюда.

Основные процедуры(команды)

Установка цвета.

Имя константы Номер цвета Цвет
Black Черный
Blue 1 Темно-синий
Green 2 Темно-зеленый
Cyan 3 Бирюзовый
Red 4 Красный
Magenta 5 Фиолетовый
Brown 6 Коричневый
LightGray 7 Светло-серый
DarkGray 8 Темно-серый
LightBlue 9 Синий
LightGreen 10 Светло — зеленый
LightCyan 11 Светло-бирюзовый
LightRed 12 Розовый
LightMagenta 13 Малиновый
Yellow 14 Желтый
White 15 Белый

Например цвет линий которые будут отображаться на экране можно задать так:

SetColor( 14 ); // Будет желтый цвет

Установка цвета фона.

Чтобы установить цвет фона для всего экрана, используется процедура:

SetBkColor( 14 );

Если процедура установки цвета фона не вызвана, экран будет черным.

Установка указателя вывода.

  • Процедура MoveTo ( x, y: integer) перемещает указатель в точку с координатами x, y.
  • Процедура MoveRel ( dx, dy: integer) перемещает указатель на dx, dy пикселей относительно последнего положения.
  • Функции GetX и GetY возвращают координаты x, y указателя вывода.

Установка точки

  • Процедура PutPixel ( x, y: integer; color: word) устанавливает точку с координатами ( x, y) и закрашивает ее указанным цветом color.
  • Функция GetPixel ( x, y: integer): word возвращает значение цвета, в который окрашена точка с координатами ( x, y).
Читайте также:
Куда пропала программа кто против

Рисование линий

  • Процедура Line ( x1, y1, x2, y2: integer) вычерчивает линию между двумя точками экрана с координатами ( x1, y1) и ( x2, y2).
  • Процедура LineTo ( x, y: integer) вычерчивает линию от последнего положения указателя до точки с координатами ( x, y).

Окружность, эллипс, дуга, сектор

Процедура Circle ( x, y: integer; r: word) вычерчивает окружность радиуса r с центром в точке с координатами ( x, y).

Процедура Arc ( x, y, ugol_ begin, ugol_ end, r: integer) вычерчивает дугу окружности радиуса r с центром в точке с координатами ( x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца дуги. Отсчет углов ведется против часовой стрелки. Значения угловых координат задается в градусах.

Процедура Ellips ( x, y: integer; ugol_ begin, ugol_ end, rx, ry: word) вычерчивает эллипс или дугу эллипса с центром в точке с координатами ( x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца дуги. Параметры rx и ry определяют горизонтальный и вертикальный радиусы эллипса.

Процедура PieSlice ( x, y: integer; ugol_ begin, ugol_ end, r: word) вычерчивает сектор окружности радиуса r с центром в точке с координатами ( x, y ). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца сектора.

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

Процедура Sector ( x, y: integer; ugol_ begin, ugol_ end, rx, ry: word) вычерчивает сектор эллипса с центром в точке с координатами ( x, y) и горизонтальным радиусом rx, вертикальным — ry. Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца сектора.

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

Прямоугольник, закрашенный прямоугольник, параллелепипед

  • Процедура Rectangle ( x1, y1, x2, y2: integer) вычерчивает контур прямоугольника. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего.
  • Процедура Bar ( x1, y1, x2, y2: integer) вычерчивает закрашенный прямоугольник. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего. Стиль и цвет заливки определяется процедурой SetFillStyle.
  • Процедура Bar3D ( x1, y1, x2, y2: integer; глубина: word; граница: boolean) вычерчивает параллелепипед. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего угла ближней грани. Параметр глубина задает расстояние между передней и задней гранями в пикселях. Параметр граница определяет, нужно ли вычерчивать верхнюю границу задней грани параллелепипеда. Стиль и цвет заливки ближней грани определяется процедурой SetFillStyle.

Вывод текста в графическом режиме.

  • Процедура OutText ( text: string) выводит строку символов text от текущей позиции указателя вывода и перемещает указатель в точку, расположенную за последним выведенным символом.
  • Процедура OutTextXY ( x, y: integer; text: string) выводит строку символов text, начиная с точки с координатами ( x, y), при этом указатель своего положения не меняет, т.е. остается в точке ( x, y ).

Стиль вычерчиваемых линий, контуров

Процедура SetLineStyle ( type, pattern, thick: word) устанавливает стиль вычерчиваемых линий. Здесь type, pattern, thick – соответственно тип, образец и толщина линии.

Тип линии может быть задан с помощью одной из следующих констант:

  • SolidLn=0
  • DottedLn=1
  • CenterLn=2
  • DashedLn=3
  • UserBitLn=4

Параметр Pattern учитывается только для линий, вид которых определяется пользователем, т.е. если type=4. Во всех остальных случаях можно поставить любое значение типа word (но обязательно поставить, все-таки это параметр процедуры, значит должен быть).

Каким образом можно задать пользовательский тип линии? Под тип линии отводится переменная типа word, т.е. два байта. Эти два байта и определяют образец линии: каждый установленный в единицу бит этого слова соответствует светящейся точке, нулевой бит — несветящийся пиксель. Таким образом, задается отрезок линии длиной в 16 пикселей. Этот образец периодически повторяется по всей длине линии.

Параметр thick может принимать одно из двух значений:

  1. NormWidth=1
  2. ThickWidth=3

Стиль и цвет заливки

Процедура SetFillStyle ( style, color: word) устанавливает стиль и цвет заливки (закрашивания) областей ( Bar, Bar3 D, Sector и др.). В качестве параметра style используют одну из констант:

  • EmptyFill=0
  • SolidFill=1
  • LineFill=2
  • LtSlashFill=3
  • SlashFill=4
  • BkSlashFill=5
  • LtBkSlashFill=6
  • HatchFill=7
  • XHatchFill=8
  • InterleaveFill=9
  • WideDotFill=10
  • CloseDotFill=11
  • UserFill=12

Стиль вывода текста

Процедура SetTextStyle ( font, orient, size: word) устанавливает шрифт font, ориентацию orient и размер size текста, выводимого на экран. Параметр font может принимать одну из констант:

  • DefaultFont=0
  • TriplexFont=1
  • SmallFont=2
  • SansSerifFont=3
  • GothicFont=4

В 7.0 версии Паскаля набор шрифтов значительно расширен, но для новых шрифтов не придуманы мнемонические константы, поэтому можно использовать такие номера шрифтов:

  • — «рукописный» шрифт ( scri. chr);
  • — одноштриховой шрифт типа Courier ( simp. chr);
  • — наклонный шрифт типа Times Italic ( tscr. chr);
  • — шрифт типа Times Rovan (lcom.chr);
  • — шрифт типа Courier увеличенного размера ( euro. chr);
  • — крупный двухштриховой шрифт ( bold. chr).

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

Параметр orient задает ориентацию выводимого текста:

Каждый шрифт способен десятикратно изменять свои размеры. Размер шрифта задается параметром size, который может иметь значения от 1 до 10 (точечный или матричный шрифт – в диапазоне от 1 до 32).

Заполнение (закрашивание) произвольной замкнутой фигуры

Процедура FloodFill ( x, y: integer; border: word) заполняет произвольную замкнутую фигуру, используя текущий стиль и цвет заполнения. Координаты точки ( x, y ) указывают, начиная с какой точки будет производиться заливка. Если точка находится внутри замкнутой фигуры, то будет закрашена внутренняя область. Если фигура не замкнута, то заливка разольется по всему экрану. Параметр border указывает цвет граничной линии.

Очистка графического экрана

Процедура ClearDevise очищает графический экран, устанавливает указатель в левый верхний угол.

Сразу вы естественно это не поймёте, нужна практика и еще раз практика иначе не как. Удачи. Спасибо за внимание.

Источник: cyberlesson.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru