Приветствую Вас Гость | RSS

Delphi заготовки

Суббота, 23.11.2024, 08:43
Главная » 2012 » Февраль » 16 » Нарисовать звезду в Delphi Pascal
07:59
Нарисовать звезду в Delphi Pascal
Функция перерисовки звездочки

исходник на Pascal / Delphi

procedure Tform1.StarLine(xO,yO,r: integer; Canvas: TCanvas);
 var p: array [0..11] of TPoint;
a,i: integer;
begin
a := 18;
for i:=0 to 11 do begin
if (i mod 2 = 0 ) then begin

p[i].x:=xO+round((r/2)*cos(a*pi/180));
p[i].y:=yO+Round((r/2)*sin(a*pi/180));


end
else begin
p[i].x:=xO+Round(r*cos(a*pi/180));
p[i].y:=yO+Round(r*sin(a*pi/180)) ;
end;
a:=a+36;
end;

Canvas.Polyline(p);

end;

программа



http://netsoftware.ucoz.ru/myStars.zip


Добавим возможность вывода под заданный угол (starta) . 

// x0,y0 -- координаты цента
// r - радиус
// starta начальный угол поворота
procedure StarLine(xO,yO,r,starta: integer; Canvas: TCanvas);
 var p: array [0..11] of TPoint;
a,i: integer;
begin
a := starta;
for i:=0 to 11 do begin
if (i mod 2 = 0 ) then begin
  p[i].x:=xO+round((r/2)*cos(a*pi/180));
  p[i].y:=yO+Round((r/2)*sin(a*pi/180));
end
else begin

  p[i].x:=xO+Round(r*cos(a*pi/180));
  p[i].y:=yO+Round(r*sin(a*pi/180)) ;
end;
a:=a+36;
end;
  Canvas.Polyline(p);
end;

Просмотров: 6576 | Добавил: NetSoftWare | Рейтинг: 4.0/1
Всего комментариев: 1
1 NetSoftWare  
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;

Имя *:
Email *:
Код *: