Hallo,
Uups -BitBlt- mit der Benutzung in dem angegebenem Link
www.dsdt.info/tipps/?id=348
XOR-SRCINVERT erkennt die Unterschiede automatisch. Alles Gleiche wird zu NULL.
Du erzeugst ein Bitmap DesktopKopie, so gross wie der Desktop mit dessen Farbtiefe.
Diese ist dann zu Beginn automatisch mit 0 gefuellt und wird durch XOR zu dem Originalbild.
So erzeugst Du eine die XOR-Kopie vom Desktop.
Delphi-Quelltext
1: 2:
| with DesktopKopie do BitBlt(Canvas.Handle, 0, 0, width, height, Desktop.canvas.handle, 0, 0, SRCINVERT); |
und vom Streifen eine echt Kopie (width= DeskTop.Width und Height = Desktop.height div N)
N echter Teiler von Desktop.height( mod N = 0)
Delphi-Quelltext
1: 2: 3:
| N := ?; with Streifen do BitBlt(Canvas.Handle, 0, 0, width, height, Desktop.canvas.handle, 0, N*heigth, SRCCOPY); |
Jetzt beide Bitmaps komprimieren und versenden.
Der Empfaenger dekomprimiert die Bilder.
Desktop mit der XOR Kopie verbinden. Wie oben, einfach Desktop und DesktopKopie tauschen.
Anschliessend den Streifen hineinkopieren.
Nach N Bildern hat man das Original wieder.
Falls man beim Empfaenger auch mit einer Bitmap arbeiten die anschliessend auf den Desktop kopiert wird, hat man sofort ein richtiges Bild, muss aber jeden Desktop einmal komplett mehr pro Aktualisierung kopieren.(Aber das ist im Vergleich zur Netzwerkbandbreite vollkommen egal).
Gruss Horst
P.S.
Du musst schon mitubertragen, welcher Originalstreifen da ankommt, sonst kann das Bild an Memory erinnern
