Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Графические возможности Delphi.doc
Скачиваний:
7
Добавлен:
10.09.2019
Размер:
91.14 Кб
Скачать

Кисть – 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