0
// O -- координаты цента // r - первый радиус // r2 второй падиус обычно r2:=r div 2 // StartA - начальный угол поворота // ncount кол-во вершин // Canvas - канва для рисования
procedure StarLine(O:Tpoint;r1,r2,StartA,ncount: integer; Canvas: TCanvas); var p: array of TPoint; // массив вершин звезды yO,xO,k,i: integer; a:real; begin a := starta; // начальный угол поворота k:=ncount*2; setlength(p,k+1); // размер массива xO:=o.x;yO:=o.y; // точки центра for i:=0 to k do begin if (i mod 2 = 0 ) then begin p[i].x:=xO+round((r1)*cos(a*pi/180)); // радиус 1 p[i].y:=yO+Round((r1)*sin(a*pi/180)); // end else begin p[i].x:=xO+Round(r2*cos(a*pi/180)); // радиус 2 p[i].y:=yO+Round(r2*sin(a*pi/180)) ; end; a:=a+360 / (k); end;
p[k+1].x:=p[0].x; p[k+1].y:=p[0].y; Canvas.Polyline(p); // риусем контур звезды Canvas.Polygon(p); // рисем закрашенную звезду
end;
Пример обрисовки
procedure TForm1.Button1Click(Sender: TObject); begin Canvas.Brush.Style:=bsCross; // установка текстуры в клеточку Canvas.Brush.Color:=clred; // цвет звезды Canvas.Pen.Color:=clgreen; // устанавливаем цвет границ Canvas.Pen.Width:=4; // устанавливаем ширину границ 4 пикселя StarLine(point(150,150),75,30,30,5,form1.Canvas); Canvas.Brush.Color:=CLYellow; // цвет второй звезды Canvas.Pen.Color:=clBlue; // устанавливаем цвет границ Canvas.Pen.Width:=1; // устанавливаем ширину границ 1 пикселя StarLine(point(150,150),50,15,30,5,form1.Canvas);
end;
|