Pascal ABC

 

ГЛАВНАЯ
УСТАНОВКА
ОКНО ПРОГРАММЫ
ЛИНЕЙНЫЕ АЛГОРИТМЫ
ЧЕРТЁЖНИК
GraphABC
    РОБОТ
АЛГОРИТМЫ С ВЕТВЛЕНИЯМИ
АЛГОРИТМЫ С ПОВТОРЕНИЯМИ
ПРОЦЕДУРЫ И ФУНКЦИИ
ТЕСТЫ
ТВОРЧЕСКИЕ РАБОТЫ
ОЛИМПИАДНЫЕ ЗАДАНИЯ
 
 

 

 

 

 

GraphABC ◊

Точка, отрезок, окружность, прямоугольникРисуем линииРисуем окружностиПодписываем рисункиМаленькие картиныСоставление алгоритмлв. Часть1 Часть 2Часть 3Часть 4Часть 5Более сложные  программы

Модуль растровой графики GraphABC обходится без объектов, хотя его возможности практически совпадают с графическими возможностями Borland Delphi. Он доступен в несобытийных программах и позволяет легко создавать анимацию без мерцания.

Модуль 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 используется для простейшего создания анимации без мерцания.

 

СЕРВИС

Copyright © 2008 Гимназия №1 имени К.Калиновского г.Свислочь © Синица А.А.