Знакомство с модулем Graph ABC и некоторыми его командами.

Знакомство с модулем Graph ABC и некоторыми его командами.

Урок 18. Знакомство с модулем GraphABC и некоторыми его командами. Вспомнить систему координат.

  • Изображение, которое мы видим на экране компьютера, представлено в виде пикселей.
  • Координаты в рисунке считаются по пикселям (приводим пример игра «Морской бой»)
  • Подключаем графический модуль и начинаем объяснять материал на простом примере, вводя основные команды библиотеки GraphABS.
  • Точка — SetPixel (x, y, color) — Закрашивает цветом color точку с координатами (x, y);
  • Отрезок — Line (x1,y1,x2,y2) — Рисует отрезок из точки с координатами (x1,y1) в точку с координатами (x2,y2);
  • окружность — Circle (x, y, radius) — Рисует окружность с центром в точке с координатами (x, y) и радиусом radius.
  • прямоугольник — Rectangle (x1,y1,x2,y2) — Рисует контур прямоугольника со сторонами параллельными сторонам экрана. Точки с координатами (x1, y1) и (x2, y2) определяют диагональные вершины прямоугольника.
  • Для закрепления изученного материала выполнить программу в результате выполнения которой будет нарисована рожица.
  • Перед выполнением задания записать в

тетрадь команды, которые мы сегодня изучили.

  • Рефлексия.
  • Выучить команды и их характеристики.
  • Составить в тетради программу,

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

Графические примитивы

Закрашивает один пиксел с координатами (x, y) цветом color.

Возвращает текущее значение цвета для пиксела с координатами (x, y).

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: string);

Выводит строку s в позицию (x, 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.

Цветовые константы и функции для работы с цветом

Модуль GraphABC содержит константы и функции для работы с цветами. Тип ColorType, описывающий цвет, определен следующим образом:

type ColorType=integer;

Стандартные цвета задаются символическими константами:

clBlack — черный clPurple — фиолетовый clWhite — белый clMaroon — темно-красный clRed — красный clNavy — темно-синий clGreen — зеленый clBrown — коричневый clBlue — синий clSkyBlue — голубой clYellow — желтый clCream — кремовый clAqua — бирюзовый clOlive — оливковый clFuchsia — сиреневый clTeal — сине-зеленый clGray — темно-серый clLime — ярко-зеленый clMoneyGreen — цвет зеленых денег clLtGray — светло-серый clDkGray — темно-серый clMedGray — серый 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).

Действия с пером

Возвращают текущие координаты пера.

procedure SetPenColor (color: integer);

Устанавливает цвет пера, задаваемый параметром color.

function PenColor: integer;

Возвращает текущий цвет пера.

procedure SetPenWidth (w: integer);

Устанавливает ширину пера, равную w пикселам.

function PenWidth: integer;

Возвращает текущую ширину пера.

procedure SetPenStyle (ps: integer);

Устанавливает стиль пера, задаваемый параметром ps.

function PenStyle: integer;

Возвращает текущий стиль пера.

Действия с кистью

procedure SetBrushColor (color: integer);

Устанавливает цвет кисти, задаваемый параметром color.

function BrushColor: integer;

Возвращает текущий цвет кисти.

procedure SetBrushPicture (fname: string);

Устанавливает в качестве образца для закраски кистью образец, хранящийся в файле fname, при этом текущий цвет кисти при закраске игнорируется.

procedure ClearBrushPicture;

Очищает рисунок-образец, выбранный для кисти.

procedure SetBrushStyle (bs: integer);

Устанавливает стиль кисти, задаваемый параметром bs.

function BrushStyle: integer;

Возвращает текущий стиль кисти.

Действия со шрифтом

procedure SetFontColor (color: integer);

Устанавливает цвет шрифта.

function FontColor: integer;

Возвращает текущий цвет шрифта.

procedure SetFontSize (sz: integer);

Устанавливает размер шрифта в пунктах.

function FontSize: integer;

Возвращает текущий размер шрифта в пунктах.

procedure SetFontName (name: string);

Устанавливает наименование шрифта.

function FontName: string;

Возвращает текущее наименование шрифта.

По умолчанию установлен шрифт, имеющий наименование MS Sans Serif. Наиболее распространенные шрифты — это Times, Arial и Courier New. Наименование шрифта можно набирать без учета регистра.

procedure SetFontStyle (fs: integer);

Устанавливает стиль шрифта.

function FontStyle: integer;

Возвращает текущий стиль шрифта.

Стили шрифта задаются следующими именованными константами:

fsNormal — обычный;

fsBold — жирный;

fsItalic — наклонный;

fsBoldItalic — жирный наклонный;

fsUnderline — подчеркнутый;

fsBoldUnderline — жирный подчеркнутый;

fsItalicUnderline — наклонный подчеркнутый;

fsBoldItalicUnderline — жирный наклонный подчеркнутый.

function TextWidth (s: string): integer;

Возвращает ширину строки s в пикселях при текущих настройках шрифта.

function TextHeight (s: string): integer;

Возвращает высоту строки s в пикселях при текущих настройках шрифта.

Действия с рисунками

Работа с рисунками в модуле GraphABC производится либо с помощью описателей (целых чисел, однозначно определяющих рисунок), либо с помощью объектов класса Picture. Работа с помощью описателей позволяет манипулировать рисунками, используя обычные поцедуры и функции и не используя классы.

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

n:=LoadPicture (fname) — загружает рисунок из файла с именем fname в оперативную память и возвращает описатель рисунка в целую переменную n; если файл не найден, то возникает ошибка времени выполнения. Загружать можно рисунки в формате .bmp, .jpg или .gif.

procedure SavePicture (n: integer; fname: string);

Сохраняет рисунок с описателем n в файл с именем fname. Рисунки можно сохранять в формате .bmp, .jpg или .gif.

procedure DrawPicture (n, x, y: integer);

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

procedure DrawPicture (n, x, y, w, h: integer);

Выводит рисунок с описателем n в позицию (x, y) графического окна, масштабируя его размеры к ширине w и высоте h. Если w<0, то рисунок зеркально отражается относительно вертикальной прямой, проходящей через x, если же h<0, то рисунок зеркально отражается относительно горизонтальной прямой, проходящей через y.

procedure DrawPicture (n: integer; x, y: integer; r: Rect);

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

procedure DrawPicture (n: integer; x, y, w, h: integer; r: Rect);

Выводит часть рисунка с описателем n, заключенную в прямоугольнике r, в позицию (x, y) графического окна, масштабируя его размеры к ширине w и высоте h. Если w<0, то рисунок зеркально отражается относительно вертикальной прямой, проходящей через x, если же h<0, то рисунок зеркально отражается относительно горизонтальной прямой, проходящей через y.

procedure CopyRect (n: integer; dest: Rect; n1: integer; src: Rect);

Копирует часть рисунка с описателем n1, заключенную в прямоугольнике src, в прямоугольник dest рисунка с описателем n.

procedure DestroyPicture (n: integer);

Удаляет рисунок с описателем n из оперативной памяти, описатель рисунка при этом становится недействительным.

procedure SetPictureSize (n, w, h: integer);

Устанавливает размер рисунка с описателем n равным w на h пикселей.

Возвращает ширину рисунка с описателем n.

Возвращает высоту рисунка с описателем n.

function PictureTransparent (n: integer): boolean;

Возвращает режим прозрачности рисунка с описателем n.

function CreatePicture (w, h: integer): integer;

Создает рисунок ширины w и высоты h и возвращает его описатель.

Создает рисунок из прямоугольника r графического окна и возвращает его описатель.

Создает рисунок из прямоугольника r внеэкранного буфера графического окна и возвращает его описатель.

procedure SetPictureTransparent (n: integer; b: boolean);

Устанавливает (b=True) или отключает (b=False) режим прозрачности при рисовании рисунка с описателем n. Если b=True, то при его рисовании фон не отображается. Фоновым считается цвет левого нижнего пиксела рисунка.

function ImageIntersect (n1,n2: integer): boolean;

Определяет, пересекаются ли изображения на рисунках с описателями n1 и n2. Рисунки должны иметь одинаковый размер. Белый цвет на рисунке считается прозрачным. Изображения на рисунках считаются пересекающимися, если имеется хотя бы один пиксел, который не прозрачен и имеет одни и те же координаты для обоих рисунков.

function StandardImageFolder: string;

Возвращает стандартный каталог для картинок (обычно MediaImages).

procedure FlipPictureHorizontal (n);

Зеркально отображает картинку с описателем n относительно горизонтальной оси симметрии.

procedure FlipPictureVertical (n);

Зеркально отображает картинку с описателем n относительно вертикальной оси симметрии.

Действия с графическим окном

procedure ClearWindow;

Очищает графическое окно белым цветом.

procedure ClearWindow (c: ColorType);

Очищает графическое окно цветом c.

function WindowWidth: integer;

Возвращает ширину графического окна.

function WindowHeight: integer;

Возвращает высоту графического окна.

function WindowLeft: integer;

Возвращает отступ графического окна от левого края экрана.

function WindowTop: integer;

Возвращает отступ графического окна от верхнего края экрана.

function WindowCaption: string;

Возвращает заголовок графического окна.

procedure SetWindowWidth (w: integer);

Устанавливает ширину графического окна.

procedure SetWindowHeight (h: integer);

Устанавливает высоту графического окна.

procedure SetWindowLeft (l: integer);

Устанавливает отступ графического окна от левого края экрана.

procedure SetWindowTop (t: integer);

Устанавливает отступ графического окна от верхнего края экрана.

procedure SetWindowSize (w, h: integer);

Устанавливает ширину и высоту графического окна.

procedure SetWindowPos (l, t: integer);

Устанавливает отступ графического окна от левого и верхнего края экрана.

procedure SetWindowCaption (s: string);

Устанавливает заголовок графического окна.

procedure SetWindowTitle (s: string);

Устанавливает заголовок графического окна. Синоним SetWindowCaption.

procedure SaveWindow (fname: string);

Сохраняет содержимое графического окна в файл с именем fname.

procedure LoadWindow (fname: string);

Выводит в графическое окно рисунок из файла с именем fname. Файл ищется вначале в текущем каталоге, а затем в каталоге PascalABCMediaImages.

procedure FillWindow (fname: string);

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

procedure FillWindow (n: integer);

Заполняет графическое окно мозаикой из рисунка с описателем n.

procedure CloseWindow;

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

function ScreenWidth: integer;

Возвращает ширину экрана.

function ScreenHeight: integer;

Возвращает высоту экрана.

procedure CenterWindow;

Центрирует графическое окно по центру экрана.

procedure MaximizeWindow;

Максимизирует графическое окно на экране.

procedure NormalizeWindow;

Восстанавливает положение графического окна на экране.

Все размеры устанавливаются и возвращаются в пикселах.

Задание режимов вывода

procedure SetDrawingSurface (n: integer);

Устанавливает в качестве канвы для рисования рисунок с описателем n. В результате весь графический вывод осуществляется не на экран, а на рисунок; настройки кисти, пера и шрифта также осуществляются для рисунка.

procedure SetDrawingSurface (p: Picture);

Устанавливает в качестве канвы для рисования рисунок с описателем n. В результате весь графический вывод осуществляется не на экран, а на рисунок; настройки кисти, пера и шрифта также осуществляются для рисунка.

procedure RestoreDrawingSurface;

Устанавливает в качестве канвы для рисования графическое окно.

Осуществляет перерисовку окна вывода при заблокированном выводе в графическое окно.

procedure LockDrawing;

Блокирует вывод в графическое окно, осуществляя рисование только во внеэкранном буфере. Для перерисовки графического окна требуется вызвать процедуру Redraw. Если графический вывод перенаправлен в рисунок вызовом процедуры SetDrawingSurface, то не оказывает никакого воздействия на вывод.

procedure UnlockDrawing;

Снимает блокировку вывода в графическое окно.

procedure LockScreenBuffer;

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

procedure UnlockScreenBuffer;

Снимает блокировку вывода во внеэкранный буфер графического окна.

function DrawingIsLocked: boolean;

Возвращает True, если вывод в графическое окно заблокирован, и False в противном случае.

procedure SetRedrawProc (procedure RedrawProc);

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

📎📎📎📎📎📎📎📎📎📎