Ломаная линия
Листинг 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. Звезда