AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Welche Farben hat lineTo getroffen?
Thema durchsuchen
Ansicht
Themen-Optionen

Welche Farben hat lineTo getroffen?

Ein Thema von Gargamel · begonnen am 11. Mär 2010 · letzter Beitrag vom 11. Mär 2010
Antwort Antwort
Gargamel

Registriert seit: 19. Mär 2007
171 Beiträge
 
#1

Welche Farben hat lineTo getroffen?

  Alt 11. Mär 2010, 14:14
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.115 Beiträge
 
Delphi 12 Athens
 
#2

Re: Welche Farben hat lineTo getroffen?

  Alt 11. Mär 2010, 14:48
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gargamel

Registriert seit: 19. Mär 2007
171 Beiträge
 
#3

Re: Welche Farben hat lineTo getroffen?

  Alt 11. Mär 2010, 15:02
OK, dann werde ich in diese Richtung weiterarbeiten. Danke.
  Mit Zitat antworten Zitat
Gargamel

Registriert seit: 19. Mär 2007
171 Beiträge
 
#4

Re: Welche Farben hat lineTo getroffen?

  Alt 11. Mär 2010, 17:21
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.
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:03 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