![]() |
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:
ein Screenshot von einem Ausschnitt des Desktops, um ihn dann anschließend abzuspeichern:
dc := GetWindowDC(GetDesktopWindow);
BitBlt(bmp.Canvas.Handle, 0, 0, cx, cy, dc, x1, y1, SRCCOPY);
Delphi-Quellcode:
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???
bmp.SaveToFile(fname);
(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 |
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 ;) |
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 00:12 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