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.
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.