При работе в графическом режиме изображение на экране строится из точек (пиксель). Каждый пиксель на экране имеет координаты (X,Y), которые образуются номерами столбцов (Х) и строк (Y). Нумерация начинается в верхнем левом углу. Именно в этом углу расположен пиксель с координатами (0,0). Координата Х растет вправо, координата Y - вниз.
Любая графическая картинка формируется из простых геометрических фигур. Это точки, отрезки (линии), прямоугольники, окружности и т.д. Графические координаты принимают только целочисленные значения.
Рисование различных геометрических фигур осуществляется с помощью специальных стандартных команд (процедур). Команды для работы в графическом режиме хранятся в библиотечном модуле GraphAbc, который описывается в разделе описаний с помощью зарезервированного слова Uses. В модуле GraphAbc с помощью команды setwindowsize(X,Y) можно задавать размеры графического окна. По умолчанию графическое окно будет принимать размеры экрана компьютера
Пример.
Program t1;
uses graphabc; {подключение модуля GraphAbc}
Begin
setwindowsize(640,480); {устанавливает размеры графического окна}
End.
Команда setpixel(x,y,c) - рисует точку с координатами (х,у) цветом с. Стандартные цвета с задаются символическими константами:
clBlack
черный
clYellow
желтый
clWhite
белый
clNavy
темно-синий
clRed
красный
clMaroon
темно-красный
clGreen
зеленый
clPurple
фиолетовый
clBrown
коричневый
clCream
кремовый
clBlue
синий
clAqua
бирюзовый
clSkyBlue
голубой
clOlive
оливковый
clFuchsia
сиреневый
clTeal
сине-зеленый
clGray
темно-серый
clMedGray
серый
clLime
ярко-зеленый
clSilver
серебряный
Процедура Line(x1,y1,x2,y2) вычерчивает прямую линию из точки (х1,y1) в точку (x2,y2) цветом установленным процедурой SetPenColor(c).
Для задания стиля линии существует команда SetPenStyle (Style), где Style - стиль линии: psSolid - сплошная, psDash – штриховая, psDot – пунктирная, psClear – прозрачная.
Установить ширину текущего пера можно процедурой SetPenWidth(Width: integer).
Процедура Rectangle(x1,y1,x2,y2) рисует прямоугольник, где (х1,y1) координаты верхней левой точки, а (х2,y2) - правой нижней.
Процедура Сircle(x,y,r) рисует окружность с центром в точке (х,y) и радиусом r.
Закрасить замкнутую фигуру можно с помощью процедуры FloodFill(х,у,c), (х,у) - координата точки внутренней области фигуры, c – цвет заливки.
Процедура СlearWindow(color) устанавливает цвет графического окна. Закрасить прямоугольник и круг можно, используя команду закраски кистью SetBrushColor (color).
TextOut(x,y: integer; s: string) - выводит строку s в позицию (x,y) (точка (x,y) задает верхний левый угол прямоугольника, который будет содержать текст из строки s);
SetFontSize(size: integer) - устанавливает размер текущего шрифта в пикселях;
SetFontColor(c: Color) - устанавливает цвет текущего шрифта;
SetFontStyle(fs: integer) - устанавливает стиль текущего шрифта.
Пример. Программа рисования отрезка, прямоугольника, треугольника и окружности.
Program L;
uses GraphAbc;
Begin
SetWindowsize(640,480);{устанавливает размеры графического окна в пикселах}
ClearWindow(clYellow); {устанавливает желтый цвет фона}
SetPenColor(clBlue);{устанавливает синий цвет пера}
С помощью геометрических фигур можно создавать любые картинки. Используя известные команды рисования геометрических фигур, нарисуйте картинки и подпишите их:
· закрашенную зеленым цветом елку;
· лодку с парусом;
· снеговика;
· дом;
· придумайте свой рисунок.
Приложение к главе 3
Таблица 1. Меню Правка
Команда
Назначение
Отменить CTRL+Z
Отмена последней операции редакти-рования текста программы
Восстановить Shift+Ctrl+Z
Восстановление предыдущей операции редактирования текста программы
Вырезать CTRL+X
Перемещение выделенного фрагмента текста из окна редактора в буфер обмена
Копировать CTRL+C
Копирование выделенного фрагмента текста из окна редактора в буфер обмена
Вставить CTRL+V
Вставка выделенного текста из буфера обмена в окно редактора
Найти CTRL+F
Поиск текста
Заменить CTRL+R
Поиск текста и замена его новым текстом
Найти далее CTRL+L
Дальнейший поиск текста
Таблица 2. Меню Файл
Команда
Назначение
Новый CTRL+N
Открытие окна для нового файла
Открыть CTRL+O
Открытие (загрузка) файла
Сохранить CTRL+S
Сохранение файла с прежним именем
Сохранить как …
Сохранение файла с новым именем
Закрыть CTRL+F4
Закрыть текущее окно файла
Выход
Выход из системы программирования
Таблица 3. Ошибки при работе в системе программирования Pascal ABC
Ошибка
Причина ошибки
Неожиданный символ
Символ введен не с регистра английских букв
Ожидался символ "точка"
После end нет точки
ожидалось begin
Нет слова begin
Ожидалась "точка с запятой"
Нет символа «;» либо неверно расставлены скобки в команде
Ожидался идентификатор
Не указано имя программы
Ожидалась команда
Отсутствует end
Неизвестное имя
Неправильно написано название команды
Ожидадось «)»
Не закрыта скобка в конце команды
Ожидался конец файла
Неверно написано слово end либо есть лишние символы после слова end в конце программы
ожидался идентификатор, но ... обнаружено зарезервированное слово
Например, вместо val1 написано var
Ошибка ввода. Программа завершена
Неверно указано имя файла с задачей (‘begin’)
Графические примитивы Модуля GraphABC
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 TextOut(x,y: integer; s: string);
Выводит строку s в позицию (x,y) (точка (x,y) задает верхний левый угол прямоугольника, который будет содержать текст из строки s).
procedure FloodFill(x,y,color: integer);
Заливает область одного цвета цветом color, начиная с точки (x,y).