Модуль GraphABC содержит
константы, типы, процедуры, функции и классы для рисования в
графическом окне. Они подразделяются на следующие группы:
Графические примитивы
Действия с цветом
Действия с пером
Действия с кистью
Действия со шрифтом
Действия с рисунками: описатели
Действия с рисунками: класс Picture
Действия с графическим
окном
Задание режимов вывода
Графические примитивы
Процедуры и функции рисования и
установки параметров рисования аналогичны методам и свойствам класса
TCanvas в Delphi. Например, вместо свойства Canvas.Brush.Color
используется пара: процедура SetBrushColor(color) и функция
BrushColor.
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; - возвращает текущий
стиль пера.
Стили пера
задаются следующими именованными константами:
Значение |
Описание |
psSolid |
Сплошная
линия (установлено по умолчанию) |
psDash |
Штриховая
линия |
psDot |
Пунктирная
линия |
psDashDot |
Штрихпунктирная линия |
psDashDotDot |
Линия,
чередующая штрих и два пунктира |
psClear |
Отсутствие
линии |
procedure
SetPenMode(m: integer); - устанавливает
режим пера, задаваемый параметром m.
function PenMode:
integer; - возвращает текущий режим пера.
Режим пера определяет, как цвет пера взаимодействует с цветом
поверхности.
Режимы пера
задаются следующими именованными константами:
pmCopy –
обычный режим; при рисовании цвет поверхности заменяется цветом
пера;
pmNot –
режим инвертирования; при рисовании цвет поверхности инвертируется
(становится негативным), а цвет пера при этом игнорируется.
Действия с кистью
procedure
SetBrushColor(color: integer); - устанавливает
цвет кисти, задаваемый параметром color.
function
BrushColor: integer; - возвращает текущий
цвет кисти.
procedure
SetBrushPicture(fname: string); - устанавливает
в качестве образца для закраски кистью образец, хранящийся в файле
fname, при этом текущий цвет кисти при закраске игнорируется.
procedure
ClearBrushPicture; - очищает
рисунок-образец, выбранный для кисти.
procedure
SetBrushStyle(bs: integer); - устанавливает
стиль кисти, задаваемый параметром bs.
function
BrushStyle: integer; - возвращает текущий
стиль кисти.
Стили кисти
задаются следующими именованными константами:
Значение |
Шаблон |
|
Значение |
Шаблон |
bsSolid
|
|
|
bsCross
|
|
bsClear
|
|
|
bsDiagCross |
|
bsHorizontal |
|
|
bsBDiagonal |
|
bsVertical |
|
|
bsFDiagonal |
|
Действия со шрифтом
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 в пикселях при текущих настройках шрифта.
Действия с графическим окном
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. Файл ищется
вначале в текущем каталоге, а затем в каталоге PascalABC\Media\Images.
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
для автоматической перерисовки всех графических объектов и фона.
Блокировка вывода в
графическое окно с последующим вызовом
Redraw
используется для простейшего создания анимации без мерцания.