| Autor |
Beitrag |
dragi
      
Beiträge: 88
|
Verfasst: Mo 06.12.04 11:51
Hallo,
ihr kennt doch bestimmt das Programm snow für Windows. Es lässt auf eurem Desktop schneeflocken schneien. Wie kann man so etwas machen? Und wieso werden die Icons nicht übermalt? Kann mir dazu vielleicht jemand Tips geben?
Vielen Dank
dragi
|
|
herzi
      
Beiträge: 168
WINXP pro, SUSE Linux 9.0
D7 Pers.
|
Verfasst: Mo 06.12.04 12:19
Mit dieser Prozedur kannst du auf dem Dektop malen. Wichtig ist dabei das Device Context GETDC(0);
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button1Click(Sender: TObject); var i:integer; ca:Tcanvas; begin ca:=TCanvas.Create; ca.Handle:=GETDC(0); for i:=15 to 150 do begin ca.Ellipse(i*2,i*2,i*3+i,i*3+i); end; ca.Free; end; |
Jetzt musst du nur Schnee malen und deine Prozedur so umändern dass die Flocken herunterfallen!
|
|
dragi 
      
Beiträge: 88
|
Verfasst: Mo 06.12.04 12:21
Vielen Dank! Dann werd ich das mal damit versuchen 
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 06.12.04 13:02
Sauberer ist GetDC(GetDesktopWindow)
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
ScorpionKing
      
Beiträge: 1150
Win XP
|
Verfasst: Mo 06.12.04 14:23
malt das auch über die icons?
_________________ Aus dem Urlaub zurück!
|
|
herzi
      
Beiträge: 168
WINXP pro, SUSE Linux 9.0
D7 Pers.
|
Verfasst: Mo 06.12.04 14:30
|
|
Calyptus
      
Beiträge: 386
Win Xp Prof
D3, D6 Pers, D7 Ent
|
Verfasst: Mo 13.12.04 17:58
| dragi hat folgendes geschrieben: | | ihr kennt doch bestimmt das Programm snow für Windows. |
Kann mit jmd einen link dafür geben?
_________________ Luft- und Raumfahrtechnik an der Uni Stuttgart
|
|
reepo2k
      
Beiträge: 138
WIN XP
Borland Delphi 7 Enterprise, Microsoft Visual C++ 6.0 Enterprise, Macromedia Dreamweaver 8
|
Verfasst: Mo 13.12.04 18:10
Ich kenn auch ein programm, damit kann man alles möglich auf dem Desktop machen.
z.B.: zerschießen, zersägen, bemalen und noch vieles mehr, nur weiß ich leider den Link nich mehr, würd mich freuen, wenn jemand anderes den hat.
MfG: reepo2k
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Mo 13.12.04 18:13
| reepo2k hat folgendes geschrieben: | Ich kenn auch ein programm, damit kann man alles möglich auf dem Desktop machen.
z.B.: zerschießen, zersägen, bemalen und noch vieles mehr, nur weiß ich leider den Link nich mehr, würd mich freuen, wenn jemand anderes den hat.
MfG: reepo2k |
Ja, das hatt ich auch mal; das is super... Das hieß glaub ich Deskop.exe
AXMD
|
|
reepo2k
      
Beiträge: 138
WIN XP
Borland Delphi 7 Enterprise, Microsoft Visual C++ 6.0 Enterprise, Macromedia Dreamweaver 8
|
Verfasst: Mo 13.12.04 18:28
Ich habs wieder.^^
PN mit folgenden Infos an mich, wenn ihr das haben wollt:
E-Mail Adresse, damit ich euch das schicken kann.
MfG: reepo2k
|
|
MartinPb
      
Beiträge: 698
|
Verfasst: Mo 13.12.04 18:55
Ich glaube, daß ihr alle mit euren Vorschlägen falsch liegt. Liest mal was er geschrieben hat:
| dragi hat folgendes geschrieben: | | Es lässt auf eurem Desktop schneeflocken schneien. Wie kann man so etwas machen? Und wieso werden die Icons nicht übermalt? Kann mir dazu vielleicht jemand Tips geben? |
Ich kenne das Snow Programm nicht, aber ich glaube nicht, daß es auf dem Desktop zeichnet. Der Begrif "Desktop" steht für zwei Dinge. Zuerst für die Fläche auf der sich die Icons- und das Desktop-Hintergrund-Bild befinden. Eben der Desktop. Dann ist das Desktop auch noch der ganze sichtbare Bereich, d.h. der Desktop-Canvas. Auf dem zu zeichnen ist kein Problem (siehe Code oben). Aber wie zeichnet man Desktop-Hintergrund? Und wie zeichnet man so, daß die Icons und die Fenster nicht überzeichnet werden?
Da gibt es zwei Möglichkeiten:
1. diese Möglichkeit kenne ich nicht, sie ist aber möglich.
2. Es werden alle sichtbaren Fenster und deren Regionen ermittelt. Als zweites werden die Iconpositionen und die Icontexte ermittelt und deren Regionen. Es wird ein Maske erstellt die die Fenster und Icons abzieht. Was übrig bleibt ist ein Clippingbereich für den Desktopbereich, der eben die Fenster- und Iconbereiche ignoriert. In diesem Bereich kann man sich austoben und es wird nichts überzeichnet. Natürlich muß dieser Bereich permanent neu berechnet werden.
Diese Technik wird in diesem ZMatrix Programm verwendet: zmatrix.sourceforge.net
Hier ist es "Die Matrix", die auf dem Hintergrundbild abläuft. Es ist wie der Matrix-Bildschirmschoner, nur daß er auf dem Desktop-Hintergrund abläuft.
_________________ Gruß
Martin
|
|
Elite
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 14.12.04 20:24
Ich möchte dauerhaft einen roten Punkt auf dem Desktop, sprich am besten auch in Spielen, anzeigen lassen. Also lasse ich einen Timer regelmäßg einen neuen Punkt in die Mitte des Screens zeichnen. Leider stoppt dieser sofort, wenn die Anwendung den Focus verliert. Kann man das verhindern?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.FormCreate(Sender: TObject); begin cv := TCanvas.Create; cv.handle := getDc(0); cv.Pen.Color := clred; cv.Brush.Color := clred; x1 := screen.Width div 2 - 2; x2 := screen.Width div 2 + 2; y1 := screen.Height div 2 - 2; y2 := screen.Height div 2 + 2; end;
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer); begin cv.Ellipse(x1,y1,x2,y2); beep; end; |
|
|