Тема урока: Знакомство
с модулем Graph ABC и некоторыми его командами.
Цели:
Образовательные:
o Закрепить
знания об алгоритмах и способах записи алгоритмов путем решения практических
задач.
o Познакомиться
с графическими возможностями программы ПаскальАВС.
Развивающие:
o умения
анализировать, сравнивать, систематизировать и обобщать;
o интерес
к учению, стремление к расширению кругозора;
Воспитательные:
o бережное
отношение к имуществу, ВТ и учебным пособиям;
o дисциплинированность,
любознательность.
Организационный момент.
Проверка домашнего задания.
Фронтальный опрос или тест на компьютере. На усмотрение учителя выставляются
отметки. Проверить выполнение задачи begin6;
Изучение нового материала.
Используем видеокурс:
Урок
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) определяют диагональные вершины прямоугольника.
·
Для закрепления изученного материала выполнить программу в
результате выполнения которой будет нарисована рожица.
Перед выполнением задания
записать в тетрадь команды, которые мы сегодня изучили.
Рефлексия.
Задание
на дом:
Выучить команды и их
характеристики. (наизусть).
Составить в тетради программу,
в результате выполнения которой, вы получите задуманный рисунок.
Графические примитивы
procedure SetPixel(x,y,color:
integer) - Закрашивает один пиксел с координатами
(x,y) цветом color.
function GetPixel(x,y):
integer - Возвращает текущее значение цвета для
пиксела с координатами (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).
Действия с
пером
function PenX: integer;
function PenY: integer;
Возвращают
текущие координаты
пера.
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, после чего передается в качестве первого
параметра во все остальные процедуры и функции работы с рисунками.
function LoadPicture(fname: string): integer;
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 пикселей.
function PictureWidth(n: integer): integer;
Возвращает
ширину рисунка с описателем n.
function PictureHeight(n: integer): integer;
Возвращает
высоту рисунка с описателем n.
function PictureTransparent(n:
integer): boolean;
Возвращает
режим прозрачности рисунка с описателем n.
function CreatePicture(w,h:
integer): integer;
Создает
рисунок ширины w и высоты h и возвращает его описатель.
function CreatePictureFromRect(r: Rect): integer;
Создает
рисунок из прямоугольника r графического окна и возвращает его описатель.
function CreatePictureFromScreenBufferRect(r: Rect): integer;
Создает
рисунок из прямоугольника 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 Redraw;
Осуществляет
перерисовку окна вывода при заблокированном выводе в графическое окно.
procedure LockDrawing;
Блокирует
вывод в графическое окно, осуществляя рисование только во внеэкранном буфере.
Для перерисовки графического окна требуется вызвать процедуру Redraw. Если
графический вывод перенаправлен в рисунок вызовом процедуры SetDrawingSurface,
то не оказывает никакого воздействия на вывод.
procedure UnlockDrawing;
Снимает
блокировку вывода в графическое окно.
procedure LockScreenBuffer;
.Блокирует
вывод во внеэкранный буфер графического окна. После вызова этой процедуры
рисование незначительно ускоряется, однако, изображение графического окна
перестает восстанавливаться.
procedure UnlockScreenBuffer;
Снимает
блокировку вывода во внеэкранный буфер графического окна.
function DrawingIsLocked:
boolean;
Возвращает
True, если вывод в графическое окно заблокирован, и False в противном случае.
procedure SetRedrawProc(procedure RedrawProc);
Устанавливает
пользовательскую процедуру для перерисовки содержимого графического окна,
вызываемую автоматически в тот момент, когда требуется его перерисовка. В
настоящее время используется в модуле ABCObjects для автоматической перерисовки
всех графических объектов и фона.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.