Кисть – Brush
Кисть используется для заливки замкнутых областей. Кисть, как объект, обладает двумя свойствами, перечисленными в таблице 5.
Таблица 5. Свойства объекта Brush
Свойство |
Определяет |
Соlor |
Цвет закрашивания замкнутой области |
Style |
Стиль (тип) заполнения области |
В качестве значения свойства Color можно использовать любую из констант табл. 2. свойств Pen.Color. В таблице 6 приведены константы, позволяющие задать стиль заполнения области.
Таблица 6. Стиль заполнения области
Константа |
Тип заполнения (заливки) области |
bsSolid |
Сплошная заливка |
bsClear |
Область не закрашивается |
bsHorisontal |
Горизонтальная штриховка |
bsVertical |
Вертикальная штриховка |
bsFDiagonal |
Диагональная штриховка с наклоном линий вперед |
bsBDiagonal |
Диагональная штриховка с наклоном линий назад |
bsCross |
Горизонтально-вертикальная штриховка, в клетку |
bsDiagCross |
Диагональная штриховка, в клетку |
Шрифт – Font
Шрифт определяет параметры шрифта, которым выводится текст на холсте. Параметры шрифта устанавливаются через его свойства, которые приведены в таблице 7.
Таблица 7. Свойства объекта Font.
Свойство |
Назначение |
Name |
Определяет название шрифта ( Arial, Times New Roman, ... ) |
Size |
Pазмер шрифта в пунктах (points). Один пункт равен 1.72 дюйма. |
Style |
Стиль начертания символов (курсив, полужирный, подчеркнутый, перечеркнутый) |
Color |
Цвет символов |
Pitch |
Устанавливает стиль шрифта |
Height |
Размер шрифта в пикселях |
Следует иметь в виду, что область вывода текста закрашивается текущим цветом кисти. Поэтому перед выводом текста свойству Brush.Color нужно присвоить значение bsClear или задать цвет кисти, совпадающий с цветом поверхности, на которую выводится текст.
Для вывода текста на поверхность графического объекта используется метод TextOut. Инструкция вызова метода TextOut в общем виде выглядит следующим образом:
Объект.Canvas.TextOut(x, y, Текст),
где Объект – имя объекта, на поверхность которого выводится текст;
x, y – координаты точкиграфической поверхности, от которой выполняется вывод текста;
Текст – переменная или константа символьного типа, значение которой определяет выводимый текст.
Некоторые методы объекта Canvas:
Метод LineTo (X, Y: Integer) рисует линию от указателя до точки с координатами (X, Y).
Метод MoveTo (X, Y: Integer) применяется для перемещения текущего указателя в новую позицию с координатами (X, Y).
Метод Ellipse (X1, Y1, X2, Y2: Integer) дает возможность нарисовать заполненный эллипс.
Метод Rectangle (X1, Y1, X2, Y2: Integer) обеспечивает вывод заполненного прямоугольника.
Метод Polygon (const Points: array of Tpoint) служит для рисования заполненного многоугольника.
Метод Draw (X, Y: Integer; Graphic: TGraphic) помещает изображение, заданное параметром Graphic, на поверхность рисования. Рисунок помещается в прямоугольную область, определяемую размером данного изображенияю При этом его верхний угол устанавливается в точку с координатами (X, Y).
Метод TextOut (X, Y: Integer; const Text: String) предназначен для отображения текста на поверхности рисования. Данный метод выводит строку текста, задаваемую параметром Text, в область вывода, верхний левый угол которой определяется параметрами (X, Y).
Метод TextRect (Rect: TRect; X, Y:integer; const Text: String) служит для отображения текста также, как и предыдущий метод, однако область вывода текста ограничивается, что определяется параметром Rect.
Метод TextHeight (const Text: String) возвращает в качестве результата высоту прямоугольной области, занимаемой строкой Text.
Метод TextWidth (const Text: String) возвращает значение, определяющее ширину области, занимаемой строкой Text.
Метод CopyRect(Dest: TRect; Canvas: TCanvas; Source: TRect) позволяет скопировать прямоугольную областьс размерами, определяемыми параметром Source, с исходного холста, заданного параметром Canvas, в прямоугольную область Dest поверхности рисования. При этом копируемое изображение масштабируется в соответствии с размерами области Dest.
Следует упомянуть о событиях OnChanging и OnChange. Эти события возникают в случае изменения содержимого поверхности рисования, то есть при использовании любых методов, связанных с рисованием или выводом текста на поверхность рисования. Событие OnChanging возникает перед модификацией холста, а событие OnChange - после модификации. Обработчики этих событий программируются вручную, так как объект Canvas не доступен на этапе проектирования.
В качестве примера использования графических возможностей Delphi приводится программа рисования кораблика непосредственно на форме.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Types;
type
TForm1 = class(TForm)
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormResize(Sender: TObject);
var
maxw, maxh, w, h: integer;
rect: TRect;
begin
Form1.Refresh;
maxw := Form1.ClientWidth;
maxh := Form1.ClientHeight;
w := maxw div 10;
h := maxh div 10;
with Form1.Canvas do
begin
// Море
Brush.Color := clBlue;
Brush.Style := bsSolid;
Pen.Color := clBlue;
Pen.Width := 1;
Rectangle(0, maxh-h, maxw, maxh);
// Корабль
// Корпус корабля
Brush.Color := clWhite;
Pen.Color := clBlack;
Polygon([
Point(2*w, maxh-3*h),
Point(8*w, maxh-3*h),
Point(7*w, maxh-h),
Point(2*w, maxh-h)
]);
Rectangle(Round(3.5*w), maxh-5*h, 6*w, maxh-3*h);
// Иллюминаторы
Brush.Color:= clYellow;
Ellipse(
Round(3.9*w), maxh-4*h-Round(0.3*w), Round(4.5*w), maxh-4*h+Round(0.3*w));
Ellipse(5*w, maxh-4*h-Round(0.3*w), Round(5.6*w), maxh-4*h+Round(0.3*w));
// Труба
Brush.Color:=clBlack;
Rectangle(Round(4.5*w), maxh - 8*h, 5*w, maxh-5*h);
// Полоса на борту
Pen.Color:=clRed;
MoveTo(2*w, maxh - 2*h);
LineTo(Round(7.5*w), maxh - 2*h);
// Полосы на трубе
Pen.Width:=2;
MoveTo(Round(4.5*w), maxh-Round(7.5*h));
LineTo(Round(5*w), maxh-Round(7.5*h));
MoveTo(Round(4.5*w), maxh-7*h);
LineTo(Round(5*w), maxh-7*h);
// Надпись на борту
Font.Height := Round(0.5*h);
Font.Style := [fsBold];
Font.Color := clGreen;
rect.Left := 7*w-TextWidth('ВАРЯГ ');
rect.Top := maxh-Round(2.75*h);
rect.Right := 7*w;
rect.Bottom := maxh-Round(2.25*h);
Brush.Color := clWhite;
TextRect(rect, 7*w-TextWidth('ВАРЯГ '), maxh-Round(2.75*h), 'ВАРЯГ');
end; // конец оператора with
end; // конец процедуры procedure TForm1.FormResize
end. // конец модуля Unit1
