| |
|
|
| 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 potuto...
Aber eine Idee habe ich doch (ja, mit ProSpeed):
Verwandle beide Bilder in ein ByteArray via InitExtFX(). Du hast jetzt zwei Handle per 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 una variabile 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 grande 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 Dimensione 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 Dimensione haben) mit CompareBytes() vergleichen. Wenn das Ergebniss positiv war, dann è sich der Bildausschnitt tatsächlich im Bild.
Nicht mal so einfach, oder? Ist aber immerhin eine relativ schnelle Lösung. Alternativ kannst du naturalmente auch mit GetPixel() / SetPixel() arbeiten. Ich hoffe, du bekommst das hin...
Saluto, Frank |
|
|
| |
|
|