Для работы с рисунками используется класс Picture, позволяющий рисовать на себе те же графические примитивы, что и на экране.
Режим блокировки рисования на экране (LockDrawing) позволяет осуществлять прорисовку лишь во внеэкранном буфере, после чего с помощью метода Redraw восстанавливать все графическое окно. Данный метод используется для ускорения анимации и создания анимации без мерцания.
В модуле GraphABC определен ряд констант, типов, процедур, функций и классов для рисования в графическом окне. Они подразделяются на следующие группы:
Графические примитивы
Функции для работы с цветом
Цветовые константы
Действия с пером: процедуры и функции
Действия с пером: объект Pen
Стиль пера
Действия с кистью: процедуры и функции
Действия с кистью: объект Brush
Стили кисти
Стили штриховки кисти
Действия со шрифтом: процедуры и функции
Действия со шрифтом: объект Font
Стили шрифта
Действия с рисунками: класс Picture
Действия с графическим окном: процедуры и функции
Действия с графическим окном: объект Window
Действия с системой координат: процедуры и функции
Действия с системой координат: объект Coordinate
Блокировка рисования и ускорение анимации
Режимы рисования
События GraphABC
Виртуальные коды клавиш
Перенаправление ввода-вывода
Типы и переменные модуля GraphABC
Color = System.Drawing.Color;
|
Тип цвета |
|
Point = System.Drawing.Point; Тип точки |
|
GraphABCException = class(Exception) end; Тип исключения GraphABC |
|
RedrawProc: procedure; Процедурная переменная перерисовки графического окна. Если равна nil, то используется стандартная перерисовка |
|
DrawInBuffer: boolean; Следует ли рисовать во внеэкранном буфере |
Графические примитивы
Графические примитивы представляют собой процедуры, осуществляющие рисование в графическом окне. Рисование осуществляется текущим пером (линии), текущей кистью (заливка замкнутых областей) и текущим шрифтом (вывод строк).
|
procedure SetPixel(x,y: integer; c: Color); Закрашивает пиксел с координатами (x,y) цветом c |
|
procedure PutPixel(x,y: integer; c: Color); Закрашивает пиксел с координатами (x,y) цветом c |
|
function GetPixel(x,y: integer): Color; Возвращает цвет пиксела с координатами (x,y) |
|
procedure MoveTo(x,y: integer); Устанавливает текущую позицию рисования в точку (x,y) |
|
procedure LineTo(x,y: integer); Рисует отрезок от текущей позиции до точки (x,y). Текущая позиция переносится в точку (x,y) |
|
procedure LineTo(x,y: integer; c: Color); Рисует отрезок от текущей позиции до точки (x,y) цветом c. Текущая позиция переносится в точку (x,y) |
|
procedure Line(x1,y1,x2,y2: integer); Рисует отрезок от точки (x1,y1) до точки (x2,y2) |
|
procedure Line(x1,y1,x2,y2: integer; c: Color); Рисует отрезок от точки (x1,y1) до точки (x2,y2) цветом c |
|
procedure FillCircle(x,y,r: integer); Заполняет внутренность окружности с центром (x,y) и радиусом r |
|
procedure DrawCircle(x,y,r: integer); Рисует окружность с центром (x,y) и радиусом r |
|
procedure FillEllipse(x1,y1,x2,y2: integer); Заполняет внутренность эллипса, ограниченного прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2) |
|
procedure DrawEllipse(x1,y1,x2,y2: integer); Рисует границу эллипса, ограниченного прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2) |
|
procedure FillRectangle(x1,y1,x2,y2: integer); Заполняет внутренность прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2) |
|
procedure FillRect(x1,y1,x2,y2: integer); Заполняет внутренность прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2) |
|
procedure DrawRectangle(x1,y1,x2,y2: integer); Рисует границу прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2) |
|
procedure FillRoundRect(x1,y1,x2,y2,w,h: integer); Заполняет внутренность прямоугольника со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев |
|
procedure DrawRoundRect(x1,y1,x2,y2,w,h: integer); Рисует границу прямоугольника со скругленными краями; (x1,y1) и (x2,y2) задают пару противоположных вершин, а w и h – ширину и высоту эллипса, используемого для скругления краев |
|
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 FillPie(x,y,r,a1,a2: integer); Заполняет внутренность сектора окружности, ограниченного дугой с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки) |
|
procedure DrawPie(x,y,r,a1,a2: integer); Рисует сектор окружности, ограниченный дугой с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки) |
|
procedure Pie(x,y,r,a1,a2: integer); Рисует заполненный сектор окружности, ограниченный дугой с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки) |