Листинг 10.4. Вычерчивание замкнутого контура (звезды) в точке нажатия кнопки мыши

unit Stars_; interface

Uses

Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls;

Type

TForm1 = class (TForm)

procedure FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

Private

{ Private declarations }

Public

{ Public declarations }

end;

Var

Forml: TForml;

Implementation

f$R *.dfm}

// вычерчивает звезду

procedure StarLine(x0,y0,r: integer; Canvas: TCanvas);

// x0,y0 — координаты центра звезды

//r — радиус заезды var

р: array [1.. 11] of TPoint;

// массив координат лучей и впадин

a: integer; // угол между осью ОХ и прямой, соединяющей

// центр звезды и конец луча или впадину i: integer;

Begin

а:= 18; // строим от правого гор. луча

for i:=l to 10 do begin

if (i mod 2=0) then begin // впадина

p[i].x:= x0+Round(r/2*cos(a*pi/180));

p[i].y:=y0-Round(r/2*sin(a*pi/180));

End

Else

begin // луч

[i].x:=x0+Round(r*cos (a*pi/180));

[i].y:=y0-Round(r*sin(a*pi/180));

end;

a:= a+36;

end;

p[ll].X:= p[l].X; // чтобы замкнуть контур звезды

Canvas. Polyline (р); // начертить звезду

end;

// нажатие кнопки мыши

procedure TForm1. FormMouseDown { Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

Begin

if Button = mbLeft // нажата левая кнопка?

then Form1. Canvas. Pen. Color: = clRed

else Form1. Canvas. Pen. Color:= clGreen;

StarLine(x, y, 30, Forml. Canvas);

end;

End.

Примечание

Обратите внимание, что размер массива р на единицу больше, чем количество концов и впадин звезды, и что значения первого и последнего элементов массива совпадают.

Окружность и эллипс

Метод Ellipse вычерчивает эллипс или окружность, в зависимости от значений параметров. Инструкция вызова метода в общем виде выглядит следующим образом:

Объект.Canvas.Ellipse (x1,y1, х2,у2]

где:

· объект — имя объекта (компонента), на поверхности которого выполняется вычерчивание;

· x1, y1, х2, у2 — координаты прямоугольника, внутри которого вычерчивается эллипс или, если прямоугольник является квадратом, окружность.

Цвет, толщина и стиль линии эллипса определяются значениями свойства Реп, а цвет и стиль заливки области внутри эллипса — значениями свойства Brush поверхности (canvas), на которую выполняется вывод.

Дуга

Вычерчивание дуги выполняет метод Arc, инструкция вызова которого в общем виде выглядит следующим образом:

Объект. Canvas.Arc(x1,y1,х2,у2,х3,у3,х4,у4)

где:

· x1, y1, х2, у2 — параметры, определяющие эллипс (окружность), частью которого является вычерчиваемая дуга;

· х3, у3 — параметры, определяющие начальную точку дуги; П х4, у4 — параметры, определяющие конечную точку дуги.

Начальная (конечная) точка — это точка пересечения границы эллипса и прямой, проведенной из центра эллипса в точку с координатами х3 и у3 (х4, у4). Дуга вычерчивается против часовой стрелки от начальной точки к конечной (рис. 10.7).

Цвет, толщина и стиль линии, которой вычерчивается дуга, определяются значениями свойства Реп поверхности (canvas), на которую выполняется вывод.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: