Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Grafik / Sound / Multimedia (https://www.delphipraxis.net/21-library-grafik-sound-multimedia/)
-   -   Delphi Über den gesamten Bildschirm zeichnen (https://www.delphipraxis.net/96330-ueber-den-gesamten-bildschirm-zeichnen.html)

FAlter 22. Jul 2007 18:50


Über den gesamten Bildschirm zeichnen
 
Wenn ihr direkt über alle Fenster drüber hinweg zeichnen wollt und dazu bequem eine Canvas nehmen wollt, macht es so:
Delphi-Quellcode:
var
  DesktopDC: HDC;
  DesktopCanvas: TControlCanvas;
begin
  DesktopDC := GetDC(0);
  if DesktopDC = 0 then
  begin
    //Hier Fehlerbehandlung einfügen
  end
  else
  try
    DesktopCanvas := TControlCanvas.Create;
    try
      DesktopCanvas.Handle := DesktopDC;

      //Hier Zeichnen, z. B.
      DesktopCanvas.Draw(0, 0, Application.Icon);
    finally
      DesktopCanvas.Free;
    end;
  finally
    ReleaseDC(0, DesktopDC);
  end;
end;
Wenn ihr dann über den gesamten Bildschirm gemalt habt, könnt ihr mit folgendem aufruf ALLE Fenster neuzeichnen.
Delphi-Quellcode:
RedrawWindow(0, nil, 0, RDW_UPDATENOW or RDW_ALLCHILDREN or RDW_INVALIDATE or RDW_ERASE or RDW_INTERNALPAINT);
Wenn ihr nur in einem Bereich gezeichnet habt, übergebt als zweites den Zeiger auf den rechteckigen Bereich.
Delphi-Quellcode:
var MyRect: TRect;
...
//z. B. MyRect := Rect(...);
RedrawWindow(0, @MyRect, 0, RDW_UPDATENOW or RDW_ALLCHILDREN or RDW_INVALIDATE or RDW_ERASE or RDW_INTERNALPAINT);
Anpassungsmöglichkeiten: Bei GetDC, ReleaseDC, RedrawWindow kann statt der (ersten) 0 auch ein Fensterhandle angegeben werden. Dann wird nicht über den gesamten Bildschirm, sondern nur über ein Fenster zezeichnet (auch von Fremdanwendungen).

Damit könnt ihr Cheats, die in einer Bildschirmecke ein unauffälliges Bildchen erscheinen lassen, programmieren ;) für eure Spielchen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:01 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