![]() |
Canvas Bewegen (schnee programm)
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
Ich möchte ein Programm schreiben, welches Fallender Schnee auf dem Gesamten (!) Desktop simuliert Habe dazu mal diesen Code zusammengebastelt:
Delphi-Quellcode:
Die Schneeflocke ist angehängt :D
procedure TForm1.Button1Click(Sender: TObject);
var h : HWND; c : TCanvas; i:tbitmap; begin i:=tbitmap.Create; i.LoadFromFile('snow.bmp'); h:=FindWindow('Progman',nil); h:=FindWindowEx(h,0,'SHELLDLL_DefView',nil); h:=FindWindowEx(h,0,'SysListView32',nil); c:=TCanvas.Create; c.Handle:=GetDc(h); c.Pen.Color:=clRed; c.Draw(100,100,i); //c.TextOut(100,100,'HehOsdffsdfsdsdf'); end; Nun bräuchte ich ein paar Tipps oder Code schnipsel wie ich die Schneeflocken animieren kann Und was ich machen muss damit sie bei Objekten wie zb Fenster oder Icons liegen bleiben... Danke schonmal Liebe Grüsse Claudio |
Re: Canvas Bewegen (schnee programm)
Das kannst du dir zB. dort abgucken: SnowScreenSaver
//Edit: Hm, das ist kein gutes Beispiel wie ich nun feststellen muss. Es ist nicht notwendig die Recourcen ständig im Timer zuladen. Einmal laden im FormCreate reicht. |
Re: Canvas Bewegen (schnee programm)
Danke...
Damit hätte ich mal die Bewegung Jetzt muss ich noch das Ansetzen irgendwie realisieren :) //////Edit Also mit dem empfohlenen Screen Saver komme ich nicht wirklich zurecht... Ich sehe nicht, wo genau die Flocken bewegt werden.... Hier hab ich noch die erste EXE.... Was haltet ihr von den Flocken? Habe den Timer auf 50 und mit
Delphi-Quellcode:
mache ich den zufall, bei mir kommen die Flocken aber nie nach ganz recht, is das bei euch auch so?
random(Screen.height);
Hier die EXE in meinem Filestore ![]() |
Re: Canvas Bewegen (schnee programm)
Hab gesehen, das bies jetzt nur jemand die Datei heruntergeladen hat....
Hat jemand einen Tipp für mich wie ich diese Flöckchen bewegen könnte?? Der edit hat ja gezeigt, das der screensaver nich das beste beispiel war :? Danke schonmal |
Re: Canvas Bewegen (schnee programm)
Hallo Hedie,
für die horizontale Positionierung müsstest Du Screen.Width verwenden. Zum Bewegen der Flocken musst Du sicherlich Objekte erzeugen (TImage?) und in einer Liste verwalten. Dann kannst Du über einen Timer deren Positionen ändern. Ich würde das erst mal in einem Formular ausprobieren. Wie Du solche Objekte auf den Desktop setzen kannst und vor allem auch noch offene Fenster(-Bereiche) ermitteln kannst ... keine Ahnung. Ist aber eine interessante Aufgabe :-) stahli |
Re: Canvas Bewegen (schnee programm)
Habe für die horizontale Positionierung auch
Delphi-Quellcode:
verwendet...
Screen.width
Hmmm ok ich werds mal versuchen... Also brauch ich gar keine canvas? |
Re: Canvas Bewegen (schnee programm)
Also Deine Flocken haben sich auf meinem Desktop "eingebrannt" :cry:
Das Hintergrundbild wird ja erst wieder bei einem Neustart geladen, denke ich. Der Weg ist also nicht optimal. Wenn man auf einen Canvas zeichnet muss man ggf. selbst dafür sorgen, dass die Aktion wieder rückgängig gemacht wird (such mal hier nach Linie und Gummiband). Wenn man Komponenten instanziert und positioniert kann man diese leicht in einer Liste verwalten und diese dann verschieben obder auch wieder freigeben. Wenn Du keine besseren Tipps enhältst würde ich das Ganze erst mal mit Komponenten in einer Formularanwendung umsetzen. Später kannst Du das Ganze dann evtl. auf den Desktop "auslagern". stahli |
Re: Canvas Bewegen (schnee programm)
ok ich versuche mal mein bestes....
Merkwürdig das die sich bei dir eingebrannt haben.... Sobald ich bei mir ein fenster drüber leg, sind die wieder weg |
Re: Canvas Bewegen (schnee programm)
Vielleicht liegt´s an meinem Vista?
Schlimmstenfalls musst Du mir einen neuen Bildschirm schicken ;-) Viel Spaß stahli |
Re: Canvas Bewegen (schnee programm)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 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