04. september 2004 - 18:00Der er
10 kommentarer og 1 løsning
Bevæge sig i cirkel
Hej
Jeg har sat en Shape på min form, der forstiller en cirkel.
Den lille cirkel kunne jeg godt tænke mig at få til at gå i ring. Altså at den køre rundt på skærmen i en cirkel. Jeg skal bruge den som sekundviser i et ur.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
procedure TForm1.Timer1Timer(Sender: TObject); var x,y : real; Grad : integer; begin y := (Form1.Height div 2) + Sin(Grad)*10-(Shape1.Height div 2); x := (Form1.Width div 2) + Cos(Grad)*10-(Shape1.Width div 2); Shape1.Left := round(x) - (Shape1.Width div 2); Shape1.Top := round(y) - (Shape1.Height div 2); inc(grad); end;
I skal bare regne i radianer i stedet for grader. Det for øvrigt en god idé at prekalkulere alle positionerne, så man ikke beregner de samme værdier igen og igen
var Positions : array[0..59] of TPoint; Counter : Integer; Shape : TShape;
procedure TForm1.FormCreate(Sender: TObject); var i : Integer; a : Double; begin Shape := TShape.Create(Form1); with Shape do begin Parent := Form1; Shape := stCircle; Width := 17; Height := 17; end;
for i := 0 to 59 do begin a := i * ((2*Pi)/60); Positions[i].x := CENTER_X + Trunc(Cos(a) * RADIUS); Positions[i].y := CENTER_Y + Trunc(Sin(a) * RADIUS); end;
Counter := 0; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Shape.Left := Positions[Counter].x; Shape.Top := Positions[Counter].y;
Inc(Counter); if Counter >= 60 then Counter := 0; end;
Beklager mit fejlende indlæg - sådan går det når konen skælder på en om at der er vigtigere ting at foretage sig (såsom støvsuge, vaske op, ordne papirer og .. aaarrhhh). :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.