Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Welche Farben hat lineTo getroffen? (https://www.delphipraxis.net/148969-welche-farben-hat-lineto-getroffen.html)

Gargamel 11. Mär 2010 14:14


Welche Farben hat lineTo getroffen?
 
OK, ich habe ein TBitmap, welches mit weisser Farbe gefüllt wurde. Dazu gibt es im Bild einige schwarze Rechtecke.

Und nun zeichne ich eine blaue Linie hinein. Der Code sieht etwa so aus:

Delphi-Quellcode:
var Bitmap:TBitmap;
    rayStartX,rayStartY,rayEndX,rayEndY:integer;
Begin
  Bitmap:=TBitmap.Create;
  Bitmap.LoadFromFile(getCurrentDir+'\testBild.bmp');

  rayStartX:=StrToInt(Edit_rayStartX.Text);
  rayStartY:=StrToInt(Edit_rayStartY.Text);
  rayEndX:=StrToInt(Edit_rayEndX.Text);
  rayEndY:=StrToInt(Edit_rayendY.Text);

  with Bitmap.Canvas do
  Begin
    Pen.Color:=clBlue;
    MoveTo(rayStartX, rayStartY);
    LineTo(rayEndX, rayEndY);
  End;

  Image_Basis.Picture.Bitmap:=Bitmap; // visuelle Kontrolle, ob in TBitmap.Canvas richtig gezeichnet wurde
End;
Nun möchte ich aber herausfinden, ob die blaue Linie auf ihrem Weg schwarze Pixel getroffen hat oder nicht.

Irgendwelche Ideen?

Die einzige Lösung, die mir eingefallen ist: Statt lineTo zu nehmen, einfach in einer Schleife den Farbwert des Pixels an Stelle [x,y] auslesen, ehe die Farbe Blau für dieses Pixel gesetzt wird.

himitsu 11. Mär 2010 14:48

Re: Welche Farben hat lineTo getroffen?
 
Zitat:

Zitat von Gargamel
Die einzige Lösung, die mir eingefallen ist: Statt lineTo zu nehmen, einfach in einer Schleife den Farbwert des Pixels an Stelle [x,y] auslesen, ehe die Farbe Blau für dieses Pixel gesetzt wird.

Bleibt dir nichts anderes übrig.

Alternativ:
- das Bild in ein weiteres TBitMap kopieren
- die Linie ins erste Bild zeichnen
- beide Bilder vergleichen da wo sich die Pixel in Bild 1 ein dem Temp-Bild unterscheiden, liegt jetzt die Linie ... ist im Temp-Bild dieses unterschiedliche Pixel schwarz, dann war dort ein schwarzes Pixel.

Gargamel 11. Mär 2010 15:02

Re: Welche Farben hat lineTo getroffen?
 
OK, dann werde ich in diese Richtung weiterarbeiten. Danke.

Gargamel 11. Mär 2010 17:21

Re: Welche Farben hat lineTo getroffen?
 
Habe gerade die Lösung ausprobiert, die Linie in ein zweites TBitmap zu zeichnen und beide Bilder miteinander zu vergleichen.
Genial. Perfekt. Läuft richtig gut. Danke nochmal für den Hinweis.

Achso, nochwas: Um die dafür nötigen Prüfungen einzuschränken, prüfe ich natürlich nur die Fläche des Bildes, welche durch die Linie "aufgespannt" wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 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