| |
|
|
| Hallo Leute !
sagen wir, ich habe ein BMP(A) und einen ausschnitt BMP(B). Nun möchte ich überprüfen ob, B irgendwo in A vorkommt. Kann ich das mit der ProSpeed.Dll irgendwie realisieren?
Mit freundlichem Gruss, Alexander Schönfeld |
|
|
| |
|
|
|
| Hallo Alexander,
da hast du dir aber eine gewaltige Aufgabe gestellt, ich kenne kein Programm oder Dll, die das könnte...
Aber eine Idee habe ich doch (ja, mit ProSpeed):
Verwandle beide Bilder in ein ByteArray via InitExtFX(). Du hast jetzt zwei Handle für zwei Byte Arrays, also quasi zwei Bereiche mit Grafikdaten. Die zurückgegebenen Handle sind Adressen zu einer Struktur, an deren Offset 40 der Zeiger auf die eigentlichen Grafikdaten steht (LongInt). Die mußt du in eine Variable speichern...
arrayadresse1&=Long(bytearray1&,40) arrayadresse2&=Long(bytearray2&,40)
Und bitte beachte, das die Grafiken vom System (paradoxerweise) von links unten nach rechts oben gespeichert werden (!) An Offset 20 steht übrigens ein LongInt, das angibt, wieviele Bytes im jeweiligen Bytearray stehen. Diese Infos brauchst du ebenfalls. Jetzt kannst du FindBytes() anwenden. Am besten läßt du die ersten 16 Bytes des Bildausschnitts im großen Bild suchen. Wenn das Ergebniss hier negativ war, ist der Bildausschnitt nirgendwo im Bild vorhanden. Wenn er positiv war, kopiere ab dieser Stelle in der Größe des Bildausschnitts diese Stelle in einen neuen HDC und von dort läßt du es wieder in ein Byte-Array umwandeln. Jetzt kannst du beide Bytesarrays (die ja jetzt die gleiche Größe haben) mit CompareBytes() vergleichen. Wenn das Ergebniss positiv war, dann befindet sich der Bildausschnitt tatsächlich im Bild.
Nicht mal so einfach, oder? Ist aber immerhin eine relativ schnelle Lösung. Alternativ kannst du natürlich auch mit GetPixel() / SetPixel() arbeiten. Ich hoffe, du bekommst das hin...
Gruß, Frank |
|
|
| |
|
|