Иллюстрированный самоучитель по Delphi 7 для начинающих

Ломаная линия

Листинг 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.

Иллюстрированный самоучитель по Delphi 7 для начинающих › Графические возможности Delphi › Ломаная линия

Рис.10.5. Звезда

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.