AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Rechteck auf Image zeichnen funktioniert nicht immer
Thema durchsuchen
Ansicht
Themen-Optionen

Rechteck auf Image zeichnen funktioniert nicht immer

Ein Thema von Creepy666 · begonnen am 28. Mär 2015 · letzter Beitrag vom 28. Mär 2015
 
Creepy666

Registriert seit: 8. Sep 2014
2 Beiträge
 
#1

Rechteck auf Image zeichnen funktioniert nicht immer

  Alt 28. Mär 2015, 01:52
Delphi-Version: 7
Hallo Gemeinde

Ich verwende die ImageSearchDLL.dll, um ein Bild in einem Image zu suchen.
Das gesuchte Bild kann mehrfach vorkommen.
Dafür erzeuge ich zur Laufzeit einen Screenshot (test.bmp), bei dem ich jeweils das gefundene Bild mit einem roten Rechteck übermale,
das Image abspeicher, wieder lade und dann den Suchlauf nochmals starte, bis alles gefunden wurde und die Suchfunktion abbricht.

Das Problem ist, es wird nur beim ersten mal ein rotes Rechteck gezeichnet, aber selbst das wird dann so behandelt,
als ob es gar nicht da wäre.

Loop durch das Bild...
Delphi-Quellcode:
while imgtest = true do // Suchbild kann ?-mal vorkommen
   begin
      Form2.Image.Picture.LoadFromFile('test.bmp'); // Image (erneut) laden
      _ImageSearch(FImagepath + 'bluespot.png', strtoint(Form1.lbledt1.Text)); // Aufruf Suchfunktion
      Form2.Image.Picture.SaveToFile('test.bmp'); // Abspeichern mit rotem Rechteck
      Form2.Image.Picture.Assign(nil); // <--- auch damit funktioniert es nicht
   end;
Suchfunktion...
Delphi-Quellcode:
ergebnis := ImageSearch(0, 0, Screen.Width, Screen.Height, PCHAR(findImage));
  try
    Split('|', ergebnis, A) ;
       if A[0] = '1then
            begin
              Rec.x := A[1]; // Rec ist ein Record für weitere Verwendung
              Rec.y := A[2];

              Form2.DrawRedRectangle(strtoint(Rec.x), strtoint(Rec.y));

              imgtest := true;
            end
In DrawRedRectangle steht...
Delphi-Quellcode:
procedure TForm2.DrawRedRectangle(X,Y: integer);
begin
    Image.Canvas.Pen.Color := clRed;
    Image.Canvas.Brush.Color := clRed;
    Image.Canvas.Rectangle(X, Y, X+17, Y+9);
    Image.Update;
    Application.ProcessMessages;
end;
Es wird wie gesagt nur beim allerersten Lauf ein Rechteck gezeichnet, das dann auch beim 1. Abspeichern vorhanden ist, nach
jedem weiteren laden wird kein weiteres Rechteck mehr gezeichnet.
Die Suchfunktion ignoriert selbst dieses Rechteck völlig, als ob es gar nicht da wäre und findet immer wieder das gleiche Suchbild
an der gleichen Position, obwohl es übermalt wurde.

Mit Grafiken hab ich relativ wenig zu tun, von daher stehe ich da wie der Ochs vorm Berg und bin auf
euch Grafikprofis angewiesen.

Danke schon mal recht herzlich für eure Tips!

Geändert von Creepy666 (28. Mär 2015 um 01:55 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz