Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Screenshots schnell erstellen??? (https://www.delphipraxis.net/120532-screenshots-schnell-erstellen.html)

taaktaak 13. Sep 2008 14:25

Re: Screenshots schnell erstellen???
 
Moin, Moin.
Mal abgesehen von der Geschwindigkeit:
Liefert BitBlt() bei Verwendung des HDC unter VISTA und aktiviertem AeroGlass überhaupt ein korrektes Bild? Habe selbst auch das Problem, kann es aber nicht selbst testen, da mir zum Programmieren kein VISTA-System zur Verfügung steht (auf einer VM konnte ich den Aero-Effekt nicht aktivieren, da die Graphikemulation der VM offenbar nicht schnell genug ist)

romber 13. Sep 2008 14:32

Re: Screenshots schnell erstellen???
 
Zitat:

Zitat von taaktaak
Moin, Moin.
Mal abgesehen von der Geschwindigkeit:
Liefert BitBlt() bei Verwendung des HDC unter VISTA und aktiviertem AeroGlass überhaupt ein korrektes Bild?

Das Bild entspricht 1 zu 1 dem, was ich auf dem Bildschirm sehe.

Namenloser 13. Sep 2008 15:13

Re: Screenshots schnell erstellen???
 
Ich kann acuh nicht bestätigen, dass Screenshots unter Vosta langsamer sind als unter XP. :gruebel:
Und Dank des neuen Window-Managers sind auf den Screenshots auch halbtransparente und Direct3D-fenster zu sehen.

taaktaak 13. Sep 2008 16:19

Re: Screenshots schnell erstellen???
 
Danke für die Info, dann wird der Fehler in MEINEM Programm wohl woanders liegen.

romber 14. Sep 2008 18:05

Re: Screenshots schnell erstellen???
 
Hat jemand Ideen, warum das System während der Screenshot-Erstellung friert und was dagegen zu unternehmen ist?

toms 14. Sep 2008 18:37

Re: Screenshots schnell erstellen???
 
Zitat:

Zitat von romber
Hat jemand Ideen, warum das System während der Screenshot-Erstellung friert und was dagegen zu unternehmen ist?

Hallo, könntest du noch weitere Infos liefern, wie du den Screenshot erstellst und ob es bei einem einzelnen Screenshot einfriert oder wenn du mehrere nacheinander machst?

romber 14. Sep 2008 19:02

Re: Screenshots schnell erstellen???
 
Für die Erstellung der Screenshot benutze ich die Funktion, die jfheins vorgeschlagen hat.

Delphi-Quellcode:
var
  HDdc: HDC;
  Bild: TBitmap;
  CopyWidth: integer;
  CopyHeight: integer;
begin
  HDdc := GetDC(0);
  CopyWidth := Screen.Width;
  CopyHeight := Screen.Height;

  Bild := TBitmap.Create;
  Bild.PixelFormat := pf24bit;
  Bild.SetSize(CopyWidth, CopyHeight);

  BitBlt(Bild.Canvas.Handle, 0, 0, CopyWidth, CopyHeight, HDdc, 0, 0, SRCCOPY);

  ReleaseDC(0, HDdc);
  Image1.Picture.Bitmap := Bild;
  Bild.Free;
Es friert auch bei dem einzelchen Screenshot ein, nur man merkt es kaum, weils zu schnell passiert. Aber wenn ich dann mehrere nacheinander erstelle, z.B. mit einem Timer und 500ms Interval, dann merkt man sehr gut, dass das System "stottert".

toms 14. Sep 2008 19:13

Re: Screenshots schnell erstellen???
 
Nebeinbei ein kleiner Optimierungsvorschlag:

Das Bitmap einmal erstellen und am Schluss frei geben.

romber 14. Sep 2008 20:25

Re: Screenshots schnell erstellen???
 
Danke für den Vorschlag! Wollte ich sowieso machen. Doch im vesentlichen hat sich nichts geändert.

Namenloser 14. Sep 2008 20:28

Re: Screenshots schnell erstellen???
 
Ich kann mir zwar nicht vorstellen, dass das viel zeit kostet, aber ggf. würde es auch Sinn machen, nur einmal das Handle zu ermitteln und dann zwischenzuspeichern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr.
Seite 3 von 4     123 4      

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