AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

auf dem Desktop zeichnen

Ein Thema von Teekeks · begonnen am 5. Apr 2009 · letzter Beitrag vom 6. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

auf dem Desktop zeichnen

  Alt 5. Apr 2009, 15:29
Hi!
Ich möchte auf einen Buttonklick auf den Desktop etwas malen.
Das hier hab ich:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var btm1:TImage;
    x,y:integer;
begin
  btm1:=TImage.Create(Form1);
  btm1.Picture.LoadFromFile('/home/peter/Decbild/ursprung.bmp');
  btm1.Canvas.Color:=clgreen;
  btm1.Canvas.Rectangle(200,200,300,300);
  btm1.Picture.SaveToFile('/home/peter/Decbild/dect.bmp');
  btm1.Free;
  screen.Updatescreen;
end;
Das dect.bmp ist das Bild was der Desktop ist. Mein Problem ist das ich zwar das bild ändere aber nicht den Desktop. Wie mach ich das?

gruß Teekeks
ps: ich arbeite mit Linux
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#2

Re: auf dem Desktop zeichnen

  Alt 5. Apr 2009, 16:21
Gibt es die Funktionen GetDesktopWindow, GetDC / GetWindowDC und BitBlt in Lazarus ?

PS:
Zitat von Teekeks:
..LoadFromFile('/home/peter/Decbild/ursprung.bmp'); ps: ich arbeite mit Linux
Also auf das wäre ich nieee gekommen

MfG
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#3

Re: auf dem Desktop zeichnen

  Alt 5. Apr 2009, 16:40
Zitat von mr_emre_d:
Gibt es die Funktionen GetWindowDesktop, GetDC / GetWindowDC und BitBlt in Lazarus ?
in Lazaru schon, aber die Frage ist, obs die Funktionen unter Linux gibt, bzw. wie deren Pendants sind.

Gruß Frank
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#4

Re: auf dem Desktop zeichnen

  Alt 5. Apr 2009, 16:55
Mit folgendem Code kannst du was auf dem Desktop schreiben. Vllt kannste den Code anpassen


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 DCanvas: TCanvas;
 DHandle: HWND;
begin
 DHandle:=GetDC(0);
 if DHandle<>0 then
 begin
   try
     DCanvas:=TCanvas.Create;
     try
       DCanvas.Handle:=DHandle;
       DCanvas.Font.Color:=clRed;
       DCanvas.Font.Size:=24;
       DCanvas.Brush.Style:=bsClear;
       DCanvas.TextOut(100, 100, 'Ich will ein Spiel spielen!!!');
     finally
       DCanvas.Free;
     end;
    finally
      if ReleaseDc(0, DHandle)<>1 then
    end;
 end;
end;
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#5

Re: auf dem Desktop zeichnen

  Alt 5. Apr 2009, 17:15
Zitat von _frank_:
Zitat von mr_emre_d:
Gibt es die Funktionen GetDesktopWindow, GetDC / GetWindowDC und BitBlt in Lazarus ?
in Lazaru schon, aber die Frage ist, obs die Funktionen unter Linux gibt, bzw. wie deren Pendants sind.

Gruß Frank
Ja, ich hätte die Frage genauer formulieren sollen. Thx

Zitat von BullsEye:
DHandle:=GetDC(0);
DesktopDC muss nicht zwingend = 0 sein. Besser wäre es da GetDesktopWindow zu benützen.

MfG
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: auf dem Desktop zeichnen

  Alt 5. Apr 2009, 18:43
MSDN-Library durchsuchenGetDesktopWindow ist eine Windows API-Funktion, ob es diese auch unter Linux gibt wage ich zu bezweifeln.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#7

Re: auf dem Desktop zeichnen

  Alt 5. Apr 2009, 18:48
eine möglichkeit wäre evtl. das bild zu ändern und "xsetroot -bitmap <bilddatei>" aufzurufen. das wäre eine möglichkeit das hintergrundbild unabhängig vom Displayanager zu setzen.

HTH Frank
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#8

Re: auf dem Desktop zeichnen

  Alt 6. Apr 2009, 08:32
Hallo alle zusammen.
Ich bedanke mich schonmal für alle Kommentare. Ich werde auch mal alles ausprobieren...
GetDesktopWindow hatte ich bereits probiert, geht aber nicht (ist ja auch WindowsAPI )

gruß Teekeks
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: auf dem Desktop zeichnen

  Alt 6. Apr 2009, 09:02
Zitat von mr_emre_d:
Zitat von BullsEye:
DHandle:=GetDC(0);
DesktopDC muss nicht zwingend = 0 sein. Besser wäre es da GetDesktopWindow zu benützen.
Der Unterschied ist nur, dass GetDC(0) auch unter Linux funktioniert, GetDesktopWindow aber wohl nicht (ausprobiert habe ich das aber jetzt nicht).

// EDIT:
Hier ein Beispiel:
http://wiki.lazarus.freepascal.org/D..._of_the_screen
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#10

Re: auf dem Desktop zeichnen

  Alt 6. Apr 2009, 09:14
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
DCanvas: TCanvas;
DHandle: HWND;
begin
DHandle:=GetDC(0);
if DHandle<>0 then
begin
   try
     DCanvas:=TCanvas.Create;
     try
       DCanvas.Handle:=DHandle;
       DCanvas.Font.Color:=clRed;
       DCanvas.Font.Size:=24;
       DCanvas.Brush.Style:=bsClear;
       DCanvas.TextOut(100, 100, 'Ich will ein Spiel spielen!!!');
     finally
       DCanvas.Free;
     end;
    finally
      if ReleaseDc(0, DHandle)<>1 then
    end;
end;
end;
So. Das geht zwar (nach ewiger unit-suche) aber es passiert nichts.
Ich kriege keine Fehlermeldung, nichts, er tut einfach nichts nachdem ich auf den Button geklickt habe
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz