![]() |
Pixel Schneefall :D
Hallo
Ich bin zufälligerweise über ein Programm gestossen, welches es auf dem Bildschirm schneien Lässt (habe es im anhang) Ich wollte fragen, wie sowas gemacht wird, und wie man es auch selbst nach coden kann? Für die antworten danke ich bereits mal grüsschen Claudio |
Re: Pixel Schneefall :D
Hi,
ich sehe von dem Programm nur eine Access Violation. Falls du direkt auf dem Bildschirm etwas zeichnen möchtest, geht dies beispielsweise ![]() ![]() |
Re: Pixel Schneefall :D
Liste der Anhänge anzeigen (Anzahl: 1)
Also bei mir klappts herrvoragend
Habe mal einen Screenshot davon gemacht (schneien tuts wirklich pixelgenau :D) Man beachte die zugeschneiten Icons |
Re: Pixel Schneefall :D
Ah, lustige Idee. Darfst du die Anwendung rechtlich gesehen eigentlich anhängen?
Du benötigst auf jedenfall die Position der Desktop-Icons. Schaue dir ![]() |
Re: Pixel Schneefall :D
Wegen dem Rechten, Ich gehe mal sehr stark davon aus, das die Personen, die dieses Programm geschrieben haben, nicht wollen, dass irgendjemand weiss wer sie sind. :D
Ok und wie kriege ich den Pixel schnee hin? |
Re: Pixel Schneefall :D
Zitat:
Zitat:
Edit: Da der Schnee, der an den Icons hängt, über die Fenster gezeichnet wird, müsste es so gehen. |
Re: Pixel Schneefall :D
Danke
Zurzeit ist es zu spät um was auzuprobieren aber ich werd es versuchen danke. p.s. Habe das Attachment gelöscht. Es wird aber auch sonst zum freien Download angeboten |
Re: Pixel Schneefall :D
hey jungs und mädels....
ich hab da so ein problem. ich muss linien... also canvas.moveto();canvas.lineto() nach unten laufen lassen! wie mache ich das am besten?????
Delphi-Quellcode:
bis jetzt bewegt isch noch gar nichtss... wer kann mir helfen???
var x,x0,y0:integer;
procedure TForm1.Timer1Timer(Sender: TObject); begin x:=random(8)+3; x0:=random(1500)+20; y0:=random(1500)+20; canvas.Pen.color:=clwhite; canvas.moveto(x+x0,y0-x); canvas.LineTo(x0-x,y0+x); canvas.moveto(x0-x,y0-x); canvas.LineTo(x0+x,y0+x); canvas.moveto(x0,y0-x); canvas.LineTo(x0,y0+x); canvas.moveto(x0-x,y0); canvas.LineTo(x0+x,y0); end; |
Re: Pixel Schneefall :D
Hallo und willkommen in der DP!
Du mußt die Position/Größe jeder Schneeflocke speichern, zB in einem ![]() Vllt wirst Du hier fündig: ![]() Edit: ![]() |
Re: Pixel Schneefall :D
kannst du mir das mal erklären mit dem array
|
Re: Pixel Schneefall :D
gibt es wirklich keinen, der mir hlefen kann, dass meine schneeflocken in diesem format anfangen sich nach unten zu bewegen?
ich bin blutiger anfänger und habe keine ahnung, wie so etwas funktioniert... brauche es aber für die schule... xD gruß toshiba |
Re: Pixel Schneefall :D
mal n denkanstoß
du hast ein array (zweidimensional) oder ein record das die koordinaten deiner schneeflocken speichert diese rufst du dann ab und setzt die schneeflocken auf den screen mit top und left genommen aus dem array |
Re: Pixel Schneefall :D
und wie funktioniert so en array??
ich hab schon gesucht, aber ic hab keine ahnung, wie ich sowas machen soll!!! kannst du mir vllt helfn?? |
Re: Pixel Schneefall :D
ok,
oben unter das
Delphi-Quellcode:
schreibst du den Namen, den du deinem Array geben willst z.b. Tarray
TYPE
dann definierst du es als Array mit
Delphi-Quellcode:
Dann braucht das Array eine Range
Tarray = array
die definierst du mit (z.b 500 werten)
Delphi-Quellcode:
Dann braucht das Array einen Typen, den es beinhalten soll: (hier Integer, da Zahlen als Inhalt)
Tarray = array [0..499]
Delphi-Quellcode:
Bei
Tarray = array [0..499] of Integer;
Delphi-Quellcode:
gibst du ihm eine Variable , wie der name schon sagt ;)
VAR
ich nenne es mal feld also
Delphi-Quellcode:
VAR
... feld : Tarray; ... Schon hast du ein Array, das jetzt beispielsweise Zahlen beinhaltet dem array Zuweisen kannst du etwas mit
Delphi-Quellcode:
ich hoffe das hilft
feld [ X ]:= random(10); //[X]= ein ganzzahliger Wert im Range des Arrays
|
Re: Pixel Schneefall :D
hey cool danke, nur iwie meldet der jetzt: Fehler, beziechner erwartet, aber array gefunden
|
Re: Pixel Schneefall :D
Zeig doch den Quelltext, den Du geschrieben hast, dann brauchen wir nich Fehlerraten spielen ;)
Informationen über Arrays findest Du in Deiner Delphi Hilfe, einfach F1 drücken in Delphi :zwinker: |
Re: Pixel Schneefall :D
Delphi-Quellcode:
so siet das bis jetzt aus... xD
unit Flocken;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, MPlayer; type TForm1 = class(TForm) Button1: TButton; Timer1: TTimer; Button2: TButton; Shape1: TShape; Tarray: array[0..1280] of integer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; feld:Tarray; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin timer1.Enabled:=true; end; var a,x,y,x0,y0:integer; procedure TForm1.Timer1Timer(Sender: TObject); begin a:=2; x:=random(8)+3; y:=3; x0:=random(1500)+20; y0:=random(1000)+20; with canvas do begin Pen.color:=clwhite; moveto(x+x0,y0-x); LineTo(x0-x,y0+x); moveto(x0-x,y0-x); LineTo(x0+x,y0+x); moveto(x0,y0-x); LineTo(x0,y0+x); moveto(x0-x,y0); LineTo(x0+x,y0); end; feld [100]:=random(10); shape1.Left:=shape1.Left+a ; if shape1.left>=1280 then shape1.Left:=-20; end; procedure TForm1.Button2Click(Sender: TObject); begin close; end; procedure TForm1.FormCreate(Sender: TObject); begin form1.Doublebuffered:=true; end; end. aber naja aller anfang ist schwer! |
Re: Pixel Schneefall :D
Zitat:
Delphi-Quellcode:
type
Tarray = array[0..1280] of integer; TForm1 = class(TForm) [...] var Form1: TForm1; feld:Tarray; |
Re: Pixel Schneefall :D
Also die Zeile
Delphi-Quellcode:
darf nicht in der Dekleration Deines TForm sein.
Tarray: array[0..1280] of integer;
Delphi-Quellcode:
var
Form1: TForm1; feld:Tarray; // Das sollte nicht da stehen *)
Delphi-Quellcode:
type
Tarray = array[0..1280] of integer; // Drauf achten: Kein ":" sondern ein "=" Zeichen! TForm1 = class(TForm) ... private { Private-Deklarationen } feld:Tarray; // *) Sondern hier public { Public-Deklarationen } end; |
Re: Pixel Schneefall :D
hey cool danke jetzt funktioniert das mit dem array, aber iwe shcaff ich es jetzt, dass sich die dinger nach unten bewegen??
(tut mir leid, dass ich euch so auf den sack geh, aber ich kann es NOCH nicht alleine xD) |
Re: Pixel Schneefall :D
Naja, das liegt da dran, das Du nur die Schneeflocke 100 ansteuerst, bzw. das Du alle relevanten Daten in Deinem Array brauchst, zB
Delphi-Quellcode:
Nun kannst Du Dein Array anstatt mit Integer mit TSchneeflocke(n) machen
type
TSchneeflocke=record X:Integer; Y:Integer; Size:Byte; end; TSchneeflocken=Array[0..1280] of TSchneeflocke; Wichtig ist, das Du am Anfang Dein Array initialisierst, das macht man mit [oh] ![]() ![]() Dann kommt noch, das Du schrittweise durch Dein Array gehen mußt und jede Schneeflocke anzusteuern, das machst Du dann mit einer [oh] ![]() Guck immer mal zu Begriffen die Dir genannt werden in die Delphi Hilfe, da sind oftmals nützliche Beispiele, also ran an den Speck :mrgreen: |
Re: Pixel Schneefall :D
naja ich versteh es nicht ganz, aber ich denke ich schlaf da jetzt mal ne nacht drüber und schau mir das morgen mal an, auch wenn ich glaub, dass das nicht funktioniert....
trotzdem danke.... ich bekomm das schon iwie schon hin... gruß toshiba |
Re: Pixel Schneefall :D
is ok mach das :D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 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