Frage von HebleBoy, 17

Ein Bild in Parabelform bewegen (Lazarus)?

Hey,
ich würde gerne eine Sonne über das Programm bewegen in einer Kurve. Nur habe ich keine Ahnung wie ich das Bild in einer Kurve bewege.

Antwort
von DataJockey, 6

Hi,

für die Animation brauchst du eine Schleife, in welcher du die Koordinaten des Bildes veränderst. Als Funktion könntest du einen Sinus verwenden.

Ich habe das Mal ausprobiert. In meinem Beispiel ist PnSky ein Panel und darauf ist ein Panel PnSun.

procedure TfrmMain.BtStartClick(Sender: TObject);
var
x, y, i, w, h : Integer;
b : Extended;
begin
w := PnSky.Width - PnSun.Width -1;
h := PnSky.Height;

for x := 0 to w
do begin
//sin(0..PI) > (0..1)

//Breite auf PI normieren
b := x * PI / w;
//Höhe berechnen
y := h - Round(Sin(b) * h);

//Ergebnis zuweisen
PnSun.Left := X;
PnSun.Top := Y;

//bisschen warten
for i := 0 to 10
do begin
Application.ProcessMessages;
sleep(1);
end;//for
end;//for
end;

hoffe das hilft,

viel Erfolg, gruss dj

Kommentar von HebleBoy ,

Danke,

ich habe aber herausgefunden, dass man es mit

(Bild).Left:=(Bild.Left+1;

Bild.Top:= round a+(sqr(Bild.Left-d))+e)

Und dann für a d e Werte festlegen

Kommentar von DataJockey ,

Der Sinus entspricht eher dem Lauf der Sonne, weil er der  Kreisfunktion entspringt. Aber mit ner quadratischen Funktion geht es natürlich auch. =)

Keine passende Antwort gefunden?

Fragen Sie die Community