Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Pixel Schneefall :D (https://www.delphipraxis.net/88645-pixel-schneefall-d.html)

hedie 18. Mär 2007 20:10


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

Matze 18. Mär 2007 20:15

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 so (Hier im Forum suchenGetDC Canvas Desktop).

hedie 18. Mär 2007 20:22

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

Matze 18. Mär 2007 20:27

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 hier Michaels Beitrag an.

hedie 18. Mär 2007 20:29

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?

Matze 18. Mär 2007 20:37

Re: Pixel Schneefall :D
 
Zitat:

Zitat von hedie
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

Ich verstehe nicht, was du meinst. Wenn das Programm nicht weitergegeben bzw. auf einem anderen Server (hier DP) zum Download angeboten werden darf, bzw du das nicht weißt, bitte ich dich, den ersten Anhang unverzüglich zu entfernen.


Zitat:

Zitat von hedie
Ok und wie kriege ich den Pixel schnee hin?

Ich weiß nicht genau, wie das "live" ausschaut, aber ich vermute, du wirst das manuell auf das Canvas zeichnen müssen (siehe 2. Beitrag hier).

Edit: Da der Schnee, der an den Icons hängt, über die Fenster gezeichnet wird, müsste es so gehen.

hedie 18. Mär 2007 20:45

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

toshiba 1. Dez 2008 16:52

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:
     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;
bis jetzt bewegt isch noch gar nichtss... wer kann mir helfen???

Sunlight7 1. Dez 2008 17:59

Re: Pixel Schneefall :D
 
Hallo und willkommen in der DP!

Du mußt die Position/Größe jeder Schneeflocke speichern, zB in einem Hier im Forum suchenArray und die Y Position dann bei jedem Zyklus nach unten verschieben.

Vllt wirst Du hier fündig: Hier im Forum suchenSchneeflocke

Edit: Den hier finde ich besonders gelungen :mrgreen:

toshiba 1. Dez 2008 19:08

Re: Pixel Schneefall :D
 
kannst du mir das mal erklären mit dem array

toshiba 2. Dez 2008 18:42

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

Noedel 2. Dez 2008 18:54

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

toshiba 2. Dez 2008 19:00

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??

Noedel 2. Dez 2008 19:10

Re: Pixel Schneefall :D
 
ok,
oben unter das
Delphi-Quellcode:
TYPE
schreibst du den Namen, den du deinem Array geben willst z.b. Tarray
dann definierst du es als Array mit
Delphi-Quellcode:
  Tarray = array
Dann braucht das Array eine Range
die definierst du mit (z.b 500 werten)
Delphi-Quellcode:
  Tarray = array [0..499]
Dann braucht das Array einen Typen, den es beinhalten soll: (hier Integer, da Zahlen als Inhalt)
Delphi-Quellcode:
  Tarray = array [0..499] of Integer;
Bei
Delphi-Quellcode:
  VAR
gibst du ihm eine Variable , wie der name schon sagt ;)
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:
  feld [ X ]:= random(10); //[X]= ein ganzzahliger Wert im Range des Arrays
ich hoffe das hilft

toshiba 2. Dez 2008 19:18

Re: Pixel Schneefall :D
 
hey cool danke, nur iwie meldet der jetzt: Fehler, beziechner erwartet, aber array gefunden

Sunlight7 2. Dez 2008 19:24

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:

toshiba 2. Dez 2008 19:26

Re: Pixel Schneefall :D
 
Delphi-Quellcode:
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.
so siet das bis jetzt aus... xD

aber naja aller anfang ist schwer!

bigben37 2. Dez 2008 19:35

Re: Pixel Schneefall :D
 
Zitat:

Zitat von Noedel
ok,
oben unter das
Delphi-Quellcode:
TYPE
schreibst du den Namen, den du deinem Array geben willst z.b. Tarray
dann definierst du es als Array mit
Delphi-Quellcode:
  Tarray = array

So sollte das ungefähr aussehen ;-) :

Delphi-Quellcode:
type

  Tarray = array[0..1280] of integer;

  TForm1 = class(TForm)
  [...]

var
  Form1: TForm1;
  feld:Tarray;

Sunlight7 2. Dez 2008 19:37

Re: Pixel Schneefall :D
 
Also die Zeile
Delphi-Quellcode:
Tarray: array[0..1280] of integer;
darf nicht in der Dekleration Deines TForm sein.

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;

toshiba 2. Dez 2008 19:45

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)

Sunlight7 2. Dez 2008 20:04

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:
type
  TSchneeflocke=record
    X:Integer;
    Y:Integer;
    Size:Byte;
  end;
  TSchneeflocken=Array[0..1280] of TSchneeflocke;
Nun kannst Du Dein Array anstatt mit Integer mit TSchneeflocke(n) machen
Wichtig ist, das Du am Anfang Dein Array initialisierst, das macht man mit [oh]Hier im Forum suchenFillChar[/oh] oder [oh]Hier im Forum suchenZeroMemory[/oh]
Dann kommt noch, das Du schrittweise durch Dein Array gehen mußt und jede Schneeflocke anzusteuern, das machst Du dann mit einer [oh]Hier im Forum suchenFor Schleife[/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:

toshiba 2. Dez 2008 20:19

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

Noedel 3. Dez 2008 15:11

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