Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Bitblt: Differenzbild zweier Bitmaps (https://www.delphipraxis.net/87493-bitblt-differenzbild-zweier-bitmaps.html)

alleinherrscher 1. Mär 2007 12:28


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: http://www.delphipraxis.net/internal...306&highlight=

Allerdings finde ich da nicht die entgültige Lösung.

Ich habe dies hier getestet:

Delphi-Quellcode:
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);
Aber selbst wenn ich es mit mergepaint modifiziere funktioniert Bitblt nicht so wie ich es gerne hätte.

Kann mir jemand sagen wie ich nun das Bitblt verwenden?

Das wäre echt super von euch!

alleinherrscher 1. Mär 2007 22:47

Re: Bitblt: Differenzbild zweier Bitmaps
 
Okay ich habe jetzt folgende Lösung, die extrem schnell arbeitet:

Differenzbild erstellen:

Delphi-Quellcode:

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;
Differenzbild auf das Originalbild legen:

Delphi-Quellcode:
bitblt(ZielDC,0,0,width,height,DifferenceDC,0,0,SRCINVERT);

smallsmoker 26. Feb 2008 18:30

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