Autor Beitrag
dragi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 168

WINXP pro, SUSE Linux 9.0
D7 Pers.
BeitragVerfasst: Mo 06.12.04 12:19 
Mit dieser Prozedur kannst du auf dem Dektop malen. Wichtig ist dabei das Device Context GETDC(0);
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Mo 06.12.04 12:21 
Vielen Dank! Dann werd ich das mal damit versuchen :)
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1150

Win XP

BeitragVerfasst: Mo 06.12.04 14:23 
malt das auch über die icons?

_________________
Aus dem Urlaub zurück!
herzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 168

WINXP pro, SUSE Linux 9.0
D7 Pers.
BeitragVerfasst: Mo 06.12.04 14:30 
Richtig
Calyptus
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 386

Win Xp Prof
D3, D6 Pers, D7 Ent
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 138

WIN XP
Borland Delphi 7 Enterprise, Microsoft Visual C++ 6.0 Enterprise, Macromedia Dreamweaver 8
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 138

WIN XP
Borland Delphi 7 Enterprise, Microsoft Visual C++ 6.0 Enterprise, Macromedia Dreamweaver 8
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 698



BeitragVerfasst: 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



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

ausblenden 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;