Zitat von
meisteralex:
wie mach ich das denn nun ??
also ich bekomme mit
bitblt(dc2,0,0,W,H,dc1,0,0,mergepaint)
schon so zimich genau die differenz der beiden bilder hin
wie komme ich jedoch mit hilfe von dc1 und der differenz, welche nun in dc2 liegt, wieder zum ausgangsbild dc2 ???
also nochmal
ich hab dc1 (vor veränderung) und dc2 (nach veränderung)
mit bitblt(dc2,0,0,W,H,dc1,0,0,mergepaint) liegt nun in dc2 die eigentliche veränderung (reduziert auf die teile die sich auch wirklich verändert haben)
wie bekomme ich nun aus dc1 und dc2 wieder das ehemalige dc2, also das komplette bild und nicht nur die veränderungen??
wäre sehr nett wenn mir da jemand helfen könnte
Ich bin mir jetzt nicht sicher, wie du die Differenz zweier Bitmaps definiers. Was ich vorzuschlagen versuche, ist, dass man die beiden DCs der beiden Bitmaps so durch BitBlt verknüpft, dass man DIE Bits, die in den Pixeln an der gleichen Stelle gleich sind, durch NULL ersetzt. Das Ergebnis sollte dann in einem dritten Bitmap gespeichert werden.
Delphi-Quellcode:
// Beispiel (theoretisch):
// Vergleich von
Bitmap1.Canvas.Pixels[0,0] = 010101010101010101010101
Bitmap2.Canvas.Pixels[0,0] = 001100110011001100110011
// herauskommen sollte, wenn Bitmap1-Bitmap2:
Bitmap3.Canvas.Pixels[0,0] = 010001000100010001000100
// für Bitmap2-Bitmap1 sieht es dann etwas anders aus
Das sollte mit BitBlt gehen.
Vielleicht hilft das was, wenn du in der
Unit 'Windows.pas' mal nach den Konstanten SRCPAINT und SRCCOPY suchst. Da stehen einige einleuchtende erläuterungen dabei.
Da die Differenz zweier Bitmaps ein scheinbar so großes Problem darstellt
, werd' ich mich mal mit der Lösung etwas genauer befassen...