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.
1 Antwort
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
DataJockey
07.11.2016, 16:12
@HebleBoy
Der Sinus entspricht eher dem Lauf der Sonne, weil er der Kreisfunktion entspringt. Aber mit ner quadratischen Funktion geht es natürlich auch. =)
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