![]() |
Bilder blinken lassen...
Moin.
Ich würede gerne wiessen, wie ich so machen kann, dass die Bilder blinken. Also ich habe zwei farbunterschiedlichen Bilder in Resource eingebunden und will nun die Bilder nacheinander laden, aber ich weis nicht nur wie. Ich glaube das geht mit Timer aber wie? Kann mir jemand helfen? :cry: |
Hallo NeoDelux
also wenn du die beiden Bilder nacheinander zeigen willst, dann kannst du zwei Imagekomponenten erstellen und die dort die beiden Bilder speichern. Die zwei Imagekomponenten kannst du übereinander legen und dann einfach mit der Sichtbarkeit arbeiten:
Code:
procedure TMainFrm.Timer1Timer(Sender: TObject);
begin if FShow1 then begin Image1.Visible := true; Image2.Visible := false; end else Image1.Visible := false; Image1.Visible := true; end; FShow1 := not FShow1; end; |
Re: Bilder blinken lassen...
Zitat:
Du brauchst: a) 1 Timer b) 1 Image c) zwei Bilder in der Resource mit den Namen Bitmap_1 und Bitmap_2
Delphi-Quellcode:
Und schon "blinkt es" :lol:
var
bild_nr: Integer; {***************************************************} procedure TForm1.FormCreate(Sender: TObject); begin Timer1.Interval := 1000; Timer1.Enabled := False; bild_nr := 1; Image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'BITMAP_' + IntToStr(bild_nr)); Timer1.Enabled := True; end; {***************************************************} procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Enabled := False; case Bild_nr of 1: bild_nr := 2; 2: bild_nr := 1; end; Image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'BITMAP_' + IntToStr(bild_nr)); Timer1.Enabled := True; end; |
Sharkys Vorschlag ist nicht schlecht, aber such mal im Forum nach "delay" und versuch eine Konstruktion damit...
|
Zitat:
delay? Was soll ihm das den bringen? Es soll ja blinken und dafür brauche ich ein Ereigniss das alle x ms auftritt. Und das ist dann ein Timer Mit einem "Delay" erzeuge ich im Programm ja nur eine Pause! |
Delphi-Quellcode:
würde einen Timer sparen...
while (wie lange soll es blinken) do
begin Image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'BITMAP_' + IntToStr(bild_nr)); delay(XXX); Image1.Picture.Bitmap.LoadFromResourceName(HInstance, 'BITMAP_' + IntToStr(bild_nr)); delay(XXX); end; ------------- whoops: Ich dachte, nur einmal wechseln... :oops: Wenn das natürlich die ganze Zeit wechseln soll, wäre ein Timer doch nicht schlecht. Mit ProcessMessages ist nicht das allerbeste. |
Könntest du vielleicht dieses etwas schrittweise erklären. Was soll ich nach dem while schreiben? Da musst doch eine Abfrage statt finden, oder? Und was bedeutet delay(XXX)?
|
delay ist eine (selbstgemachte) procedure, die den Ablauf des Programms um X Millisekunden verzögert, ohne dabei Sachen wie schließen, verschieben... verhindert.
Bei dem while: zb irgend was mit dem TickCount. Oder mach ne for-Schleife, und gib an wie oft. Aber für deinen Gebrauch ist der Timer besser! |
Re: Bilder blinken lassen...
Hi,
War Delay(ms) nicht eine Procedure aus dem alten Turbo Pascal ? Wie wär's mit Sleep ? (afaik aus Unit Windows oder so) die macht das gleiche -> warten ;) |
Re: Bilder blinken lassen...
Moin The-X,
sleep hält den Thread in dem es aufgerufen wird komplett an, es wird als z.b. nicht mehr neu gezeichnet, wohingegeben das, selbstgemachte, Delay die Verarbeitung von Messages weiterhin zulässt. (wenn's so gemacht ist, wie die Version, die wir hier in der Code Libraray haben ;-)) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz