Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

AW: BitmapCompare nicht zuverlässig / Scanline Problem?

  Alt 24. Jan 2019, 20:21
ScanLine liefert dir einen Zeiger auf den ersten Pixel der Zeile. Du vergleichst hier mit if c1 <> c2 then jeweils zwei Zeiger, was nicht wirklich zielführend ist

Falsch gelesen

Fritz hat schon recht. Der Vergleich sollte je nach PixelFormat mit den korrekten Datentypen durchgeführt werden. Warum? Ganz einfach: Ausgehend von 32-Bit hättest du ScanLine[0] = 1. Pixel = Scanline + $00 aber ScanLine[1] = 2. Pixel = Scanline + $04 . Da du aber PByte über den Array Operator indizierst, ist bei dir ScanLine[1] = Scanline + $01 was "irgendwo" im 1. Pixel liegt. Kann man natürlich auch so machen, aber dann sollte deine Schleife nicht bis .Width laufen, sondern bis .Width * 4 (und die Diskrepanz zu .Pixels musst du dann natürlich bewusst ignorieren, da du in diesem Falle mit ScanLine auf Byte Granularität arbeitest, .Pixels aber immer auf den kompletten Pixeln).
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (24. Jan 2019 um 20:43 Uhr)
  Mit Zitat antworten Zitat