![]() |
Text auf Desktop Zeichnen
Moin Moin,
habe folgende Funktionen gefunden
Delphi-Quellcode:
oder
procedure Tmnb_form.WriteText(TransText: string);
var MyHand: HWND; MyDc: HDC; MyCanvas: TCanvas; begin MyHand := GetDesktopWindow; MyDc := GetWindowDC(MyHand); MyCanvas := TCanvas.Create; MyCanvas.Handle := MyDC; BeginPath(MyCanvas.Handle); MyCanvas.Font.Color := clRed; MyCanvas.Font.Name := 'Courier New'; MyCanvas.Font.Size := 60; SetBkMode(MyCanvas.Handle, TRANSPARENT); EndPath(MyCanvas.Handle); MyCanvas.TextOut(0, 0, TransText); end;
Delphi-Quellcode:
beide funktionieren so gesehen recht ok! aber - was ist wenn der Text dann auf dem Desktop zu sehen ist?!
procedure DrawPicture(const FileName: string; Width: Integer = 0; Height: Integer = 0; Top: Integer = 0; Left: Integer = 0);
var DC: HDC; Canvas: TCanvas; Bitmap: TBitmap; begin // Falls die Datei existiert, dann fortfahren if FileExists(FileName) then begin Bitmap := TBitmap.Create; try Bitmap.LoadFromFile(FileName); // Falls eigene Parameter angeben sind, werden diese benutzt. if Height > 0 then Bitmap.Height := Height; if Width > 0 then Bitmap.Width := Width; // Wir holen uns den 'Device Context' vom Desktop DC := GetWindowDC(GetDesktopWindow()); try Canvas := TCanvas.Create(); try // Wir weisen den DC dem Canvas zu Canvas.Handle := DC; // Das Bild wird an Left / Top auf den Desktop gezeichnet Canvas.Draw(Left, Top, Bitmap); finally Canvas.Free; end; finally ReleaseDC(0, DC); end; finally Bitmap.Free; end; end; end; Wie bekomme ich den wieder weg?! oder stehe ich auf dem Schlauch?! |
Re: Text auf Desktop Zeichnen
Nein, du stehst nicht auf dem Schlauch, die Sache ist und bleibt einfach do das es
mit dem zeichnen auf den Desktop nicht das Warhe ist. Es gibt Optionen mit dem man das was dem Desktop angetan wurde wieder rückgängig zu machen aber dadurch kommt es zum flackern der Icons da diese nan neu gezeichnet werden müssen. Das kann man unter XP nicht anders lösen mit diesen Methoden. zB.:
Delphi-Quellcode:
oder:
Windows.UpdateWindow(GetDesktopWindow)
Delphi-Quellcode:
Besser ist es ein durchsitiges Fenster zu erstellen und darauf zu zeichnen.
InvalidateRect(GetDesktopWindow, nil, TRUE);
Beispiele sollte es hier in der DP dazu genügend geben ... |
Re: Text auf Desktop Zeichnen
hmm ok dann Danke ich :-)
|
Re: Text auf Desktop Zeichnen
Hallo
Zusätzlicher Hinweis:
Delphi-Quellcode:
In deinem oberen(ersten) Beispiel vermisse ich noch das notwendige Aufräumen mit
MyDc := GetWindowDC(MyHand);
Delphi-Quellcode:
....
ReleaseDC
|
Re: Text auf Desktop Zeichnen
Ein durchsichtiges Fenster wäre auch besser bzgl. Redraw. Falls das von Dir Ausgegebene von irgend etwas überdeckt wird ist es weg - auch wenn es erhalten bleiben soll.
|
Re: Text auf Desktop Zeichnen
Hallo,
noch 'n Hinweis: GetDC(0) liefert direkt den Desktop-DC. und noch einer: seit Vista ist es kein Spaß mehr, auf den Desktop zu zeichnen. Das ist elend langsam geworden. Such Dir also lieber eine andere Strategie. Gruß xaromz |
Re: Text auf Desktop Zeichnen
Zitat:
|
Re: Text auf Desktop Zeichnen
Hi,
eine Möglichkeit, auf die ürsprüngliche Frage Zitat:
![]() Mfg FAlter |
Re: Text auf Desktop Zeichnen
Zitat:
Du kenst aber das Problem mit dem flackernden Bildschirm ? |
Re: Text auf Desktop Zeichnen
Hallo,
Zitat:
Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:57 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