![]() |
auf dem Desktop zeichnen
Hi!
Ich möchte auf einen Buttonklick auf den Desktop etwas malen. Das hier hab ich:
Delphi-Quellcode:
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?
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; gruß Teekeks ps: ich arbeite mit Linux |
Re: auf dem Desktop zeichnen
Gibt es die Funktionen GetDesktopWindow, GetDC / GetWindowDC und BitBlt in Lazarus ?
PS: Zitat:
MfG :roll: |
Re: auf dem Desktop zeichnen
Zitat:
Gruß Frank |
Re: auf dem Desktop zeichnen
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; |
Re: auf dem Desktop zeichnen
Zitat:
Zitat:
MfG |
Re: auf dem Desktop zeichnen
![]() |
Re: auf dem Desktop zeichnen
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 |
Re: auf dem Desktop zeichnen
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 :D ) gruß Teekeks |
Re: auf dem Desktop zeichnen
Zitat:
// EDIT: Hier ein Beispiel: ![]() |
Re: auf dem Desktop zeichnen
Delphi-Quellcode:
So. Das geht zwar (nach ewiger unit-suche) aber es passiert nichts.
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; Ich kriege keine Fehlermeldung, nichts, er tut einfach nichts nachdem ich auf den Button geklickt habe :( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 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