Листинг 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.
Рис.10.5. Звезда
Дата добавления: 2015-09-18 | Просмотры: 501 | Нарушение авторских прав
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
|