![]() |
Bitblt: Differenzbild zweier Bitmaps
Hallo!
Ich weiß das Thema haben wir schon dutzende Male besprochen. Ich möchte die Differenz zweier Bitmaps mit hilfe des Bitblt Befehls errechnen um nur die Änderung zwischen 2 Bildern zu erhalten. Diese Änderung soll dann irgendwie wieder auf das Originalbild gelegt werden um das veränderte Bild zurückzugewinnen. Dafür habe ich diesen Thread hier studiert: ![]() Allerdings finde ich da nicht die entgültige Lösung. Ich habe dies hier getestet:
Delphi-Quellcode:
Aber selbst wenn ich es mit mergepaint modifiziere funktioniert Bitblt nicht so wie ich es gerne hätte.
procedure DifZweierBilder(ZielDC,DC1,DC2:HDC);
begin // ( DC1 and ( not ( DC1 and DC2 )) damit sollte folgendes ausgedrückt werden // erstmal kopieren BitBlt(ZielDC,0,0,1024,768,DC1,0,0,SRCCOPY); // die innere UND-Verknüpfung BitBlt(DC1,0,0,1024,768,DC2,0,0,SRCAND); // die UND-NICHT verknüpfung BitBlt(ZielDC,0,0,1024,768,DC1,0,0,NOTSRCAND); end; // Aufruf durch DifZweierBilder(ZielCanvas.Handle,Canvas1.Handle,Canvas2.Handle); Kann mir jemand sagen wie ich nun das Bitblt verwenden? Das wäre echt super von euch! |
Re: Bitblt: Differenzbild zweier Bitmaps
Okay ich habe jetzt folgende Lösung, die extrem schnell arbeitet:
Differenzbild erstellen:
Delphi-Quellcode:
Differenzbild auf das Originalbild legen:procedure GetDifference(ZielDC,DC1,DC2:HDC;DCwidth:integer;DCheight:integer); begin BitBlt(ZielDC,0,0,DCwidth,DCheight,DC2,0,0,SRCCOPY); bitblt(ZielDC,0,0,DCwidth,DCheight,dc1,0,0,SRCINVERT); end;
Delphi-Quellcode:
bitblt(ZielDC,0,0,width,height,DifferenceDC,0,0,SRCINVERT);
|
Re: Bitblt: Differenzbild zweier Bitmaps
Liste der Anhänge anzeigen (Anzahl: 1)
Beispiel im Anhang
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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