Announcement

Collapse
No announcement yet.

Image per Zufall auf dem Bildschirm bewegen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Image per Zufall auf dem Bildschirm bewegen

    Wie kann ich eine image komponente sich Zufallsgesteuert auf dem Bildschirm bewegen lassen?
    Das image soll z.B von rechts nach links unten entlangfliegen.

  • #2
    Die Image-Komponente kannst du bewegen, indem du die Left- und Top-Eigenschaft veränderst (am besten in einen Timer). Bei großen Bildern wirst du aber ein unerträgliches Flackern erhalten, da der Bildaufbau zu lange dauert, besser (aber leider auch komplizierter *grummel*) ist es, wenn du per Windows-API/DirectX Animationen erzeugt.

    Leider weiss ich ja nicht genau, was du genau unter dieser "zufallsgesteuerter" Animation verstehst, ich armer Kerl kann dir deswegen da auch nicht mit Code-Beispielen weiterhelfen, schnüff

    Comment


    • #3
      Hey,<br>
      das Problem mit der Bildbewegung habe ich auch. Weiß <zufällig> jemand, wie man es <b>ohne</b> einen Timer machen kann?<br>
      Danke,<br>
      Lionhea

      Comment


      • #4
        Folgende Möglichkeiten würden mir Einfallen:

        - Mittels eines eigenen Threads (Aufwendig)

        - In der OnIdle-Message der Applikation (Aufpassen, daß nicht gesammte Rechenzeit verbraten wird

        Comment


        • #5
          Hi,

          nehme einfach einen Timmer. Per Zufall erhöchst oder ernieddrigst du dann die Left, bzw. Top Eigenschaft.

          <pre>
          void __fastcall Timer1.......()
          {
          int a = random(4);
          switch (a)
          {
          case 0:
          Image1->Left = Imgae1->Left + 2;
          break;

          case 1:
          Image1->Left = Imgae1->Left - 2;
          break;

          case 2:
          Image1->Top = Imgae1->Left + 2;
          break;

          case 3:
          Image1->Top = Imgae1->Left - 2;
          break;
          }
          }
          </per>

          So ählich könnte ein Lösunsweg ausehen.

          Philip

          Comment


          • #6
            Mit Timer:
            Einfach: Randomize;
            Image1.Left := Random(800);
            Image1.Top := Random(600;
            Statt 800 und 600 kann man auch andere Zahlen eingeben. Die Position von Image1.Left wird dann jedesmal wenn der Timer abläuft zwischen 0 und 800 ausgewählt.
            Ohne Timer (hier bei drücken von Enter wird Prozedure ausgelöst und läuft ab bis Leertaste gedrückt wird):
            procedure TForm1.OnKeyUp(...);
            begin
            if key = VK_Enter then begin
            repeat
            Randomize;
            Sleep(50); //Sleep ersetzt hier den Timer
            Image1.Left := Random(800); //das gleiche wie oben
            Image1.Top := Random(600);
            until key = VK_Space; //Bis leertaste gedrückt wird
            end;
            end;

            So müsste es funktionieren!
            :-) Seb

            Comment

            Working...
            X