Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Frage zu BitBlt und TBitmap (https://www.delphipraxis.net/126903-frage-zu-bitblt-und-tbitmap.html)

dmw64 4. Jan 2009 16:55


Frage zu BitBlt und TBitmap
 
Hi & frohes Neues :-D!

Hab mal 'ne ganz doofe Frage zu BitBlt und zum Datentyp TBitmap: ich mache mittels

Delphi-Quellcode:
dc := GetWindowDC(GetDesktopWindow);
BitBlt(bmp.Canvas.Handle, 0, 0, cx, cy, dc, x1, y1, SRCCOPY);
ein Screenshot von einem Ausschnitt des Desktops, um ihn dann anschließend abzuspeichern:

Delphi-Quellcode:
    bmp.SaveToFile(fname);
Wird bei BitBlt eigentlich nur irgendwelche Handles kopiert oder die Pixel selber? Falls die Pixel selbst kopiert werden, wie kann man auf diese Daten nach dem BitBlt-Aufruf zugreifen???

(Ich mache nämlich gleich eine ganze Schar von Screenshots und will nur die speichern, die wirklich verschieden zum Vorgänger sind... Meine alte Möhre ist sonst mit dem Schreiben zu langsam...)

Vielen Dank und 'nen schönen Sonntagabend :cheers:
dmw64

jfheins 4. Jan 2009 16:59

Re: Frage zu BitBlt und TBitmap
 
Es werden die Pixel kopiert, also eine vollwertige Kopie des einen Canvas im anderen erstellt.

Du kannst auf die kopierten Pixel zugreifen, indem du z.B. Bitmap.Canvas.Pixels[] benutzt, oder was wolltest du wissen? :gruebel:

Um Platz zu sparen, kannst du z.B. nur die Differenz zum vorherigen Bild speichern - dank der vielen schwarzen Flächen sollte sich das hervorragend komprimieren lassen ;)

dmw64 4. Jan 2009 17:02

Re: Frage zu BitBlt und TBitmap
 
Jupppp, dat war's. Vielen Dank für die schnelle Antwort :-D


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