Ein Bild in Parabelform bewegen (Lazarus)?

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


HebleBoy 
Beitragsersteller
 07.11.2016, 14:29

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

0
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. =)

1