Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Screenshot von transparenten Objekten (https://www.delphipraxis.net/134918-screenshot-von-transparenten-objekten.html)

False Pretense 1. Jun 2009 14:46


Screenshot von transparenten Objekten
 
Hallo!

Wie kann ich einen Screenshot erstellen, auf dem ebenfalls transparente Objekte/Fenster zu sehen sind?
Ich habe schon sämtliche Codeschnippsel für Screenshots ausprobiert, die aber alle keine transparente Fenster draufbekommen...
Als Lösung hab ich mir überlegt, einfach die Screenshotfunktion von Windows zu verwenden, denn die bekommt transparente Fenster drauf.
Aber ich müsste direkt auf die Funktion zugreifen können, denn die Drucktaste habe ich schon als Hotkey verwendet.

Ich wäre sehr dankbar für eine Lösung, danke schonmal im Voraus.

Mit freundlichen Grüßen,
False Pretense

himitsu 1. Jun 2009 14:59

Re: Screenshot von transparenten Objekten
 
hast auch schon versucht direkt vom Desktop zu kopieren?

GetDC(0) liefert das Desktop-Handle


also quasi die Umkehrung von dem auf dem Desktop zeichnen

jaenicke 1. Jun 2009 15:14

Re: Screenshot von transparenten Objekten
 
Das Problem dürfte sein, dass die Fenster per Overlay angezeigt werden. Und da funktionieren die Standardquelltexte in der Tat nicht. Die Frage kommt auch nicht zum ersten Mal, das letzte Mal habe ich auf dieses Projekt verwiesen:
http://sourceforge.net/project/showf...roup_id=104102
Das kann das und ist Open Source, man könnte also einfach mal schauen wie das geht.

toms 1. Jun 2009 16:03

Re: Screenshot von transparenten Objekten
 
Hallo

Hast du CAPTUREBLT in BitBlt angegeben?

False Pretense 1. Jun 2009 16:38

Re: Screenshot von transparenten Objekten
 
Hallo Leute!

Danke erstmal für eure Antworten. Ich hab mir das mit CAPTUREBLT mal genauer angeschaut und es funktioniert. Vielen Dank :)

Für die, die ebenfalls eine Lösung darauf suchen:
Delphi-Quellcode:
const
  CAPTUREBLT = $40000000;
(*...*)
 BitBlt(bm.Canvas.Handle, 0, 0, Width, Height, Dc, x, y, (**)SRCCOPY or CAPTUREBLT(**));
SRCCOPY wird hier einfach durch "SRCCOPY or CAPTUREBLT" ersetzt.

Mit freundlichen Grüßen,
False Pretense


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