Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Scanline x,y Koordinaten falsch?!? (https://www.delphipraxis.net/120800-scanline-x-y-koordinaten-falsch.html)

chrizl08 16. Sep 2008 22:43


Scanline x,y Koordinaten falsch?!?
 
Hi,
ich habe folgende Scanline Schleife;
Delphi-Quellcode:
Function FindColor(bmp:TBitmap):TPoint;
type
  PixArray = array[1..3] of Byte;
var
  i, iMax, x, y, w, h: Integer;
  p : ^PixArray;
begin

  Result:=Point(-1,-1);

  Form1.ProgressBar1.Max := bmp.Height-1;

  for y := 0 to bmp.Height-1 do begin
    p := bmp.ScanLine[y];
    Form1.ProgressBar1.Position := y;
    for x := 0 to bmp.Width-1 do begin
      if( (p^[3]=255) AND (p^[2]=0) AND (p^[1]=0) ) then begin
        Showmessage('Gefunden');
        Result := Point(x, y);
        exit;
      end;
      inc(p)
    end;
  end;
end;
Leider liegen die gefundenen Koordinaten immer ca. 300 Pixel rechts neben dem gesuchten Punkt.
Woran liegt das? Am umgekehrten Aufbau von Scanlines?

Danke!!

SirThornberry 17. Sep 2008 05:55

Re: Scanline x,y Koordinaten falsch?!?
 
nein, daran liegt es nicht. Woran es liegt kann man dir so aber auch nicht sagen weil du uns ja jegliche Information die uns helfen könnte verschweigst.
Woher weißt du denn das es 300 Pixel daneben liegt? geschätzt? Kann es nicht sein das die Farbe mehrfach vorkommt?
Und wenn es wirklich 300 Pixel daneben liegt, welche Farbe liegt denn dann an der Stelle die gefunden wird?
Eventuell eine wo die identich mit der gesuchten ist nur das rot und blau vertauscht sind?
:glaskugel: Das sind alles Dinge die meine Glaskugel in Betracht zieht weil diese ja nicht weiß was du wirklich suchst und was du findest. Zudem weiß sie auch nicht woher du weißt dass, das Ergebnis genau 300 Pixel daneben liegt oder ob dies eine Schätzung ist.

chrizl08 17. Sep 2008 08:28

Re: Scanline x,y Koordinaten falsch?!?
 
Also ich hab in das bmp die Koordinaten Farbig markiert und dann abgespeichert. In Photoshop geöffnet und nachgemessen ergab dass dann ca. 300 Px, 325 um genau zu sein :) Die Farbe kommt zwar weiter unten vor aber das sollte kein Problem sein da ich das bmp ja von oben her absuche und direkt beim ersten Treffer stoppe. Je nachdem wie mein Fenster ist, maximiert oder minimiert ist dort dann meistens die Farbe weiß...

Ich hab auch mal einfach die Koordinaten x,y in den Mouse Cursor eingesetzt und mitfahren lassen damit ich sehe wo gerade sich die Schleife befindet und dann geht er jedesmal eben ca. 300 px über den Farbpixel hinaus.

reicht das an Infos? :)

jfheins 17. Sep 2008 10:12

Re: Scanline x,y Koordinaten falsch?!?
 
Hat das Bitmap denn auch das Format pf24bit ??

chrizl08 17. Sep 2008 13:33

Re: Scanline x,y Koordinaten falsch?!?
 
das Bitmap hat 32bit, macht das einen Unterschied? :) Kann gerade leider nicht testen da ich in der Arbeit bin... aber Danke schonmal für den Tipp! :)

jfheins 17. Sep 2008 13:36

Re: Scanline x,y Koordinaten falsch?!?
 
Ja - denn dann soltest du dein Array auch 4 Byte groß machen :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz