AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Pixelabfrage bei Images
Thema durchsuchen
Ansicht
Themen-Optionen

Pixelabfrage bei Images

Ein Thema von michaela · begonnen am 13. Jul 2004 · letzter Beitrag vom 13. Jul 2004
Antwort Antwort
michaela

Registriert seit: 3. Apr 2004
14 Beiträge
 
#1

Pixelabfrage bei Images

  Alt 13. Jul 2004, 18:40
Hi,
ich habe ein Komponente vom Typ TImage auf dem Formular und darauf eine mit canvas geschriebene Grafik. Das Image ist 400 * 400 breit.
Darunter befinden sich 2 Edits für Kordinaten.
zuerst soll man die Anfangskordinaten für eine Linie eintragen und danach die Endkordinaten.
Auf Button KLick soll die Linie gezeichnet werden, aber nur wenn sie keine andere Linie kreuzt.

Ich glaube, dass es sinnvoll wäre, für jeden Punkt der Linie zu prüfen, ob er auf eine weißes Pixel gezeichnet wird.
Das heißt: Ich brauche den Befehl für die Abfrage der Farbe eines Pixels.

Weiß zufällig jemand wie das geht?

Danke im Vorraus

Michaela
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#2

Re: Pixelabfrage bei Images

  Alt 13. Jul 2004, 18:44
Hallo und Wölkommen erstmal,

also einfach mal kurz in die OH geguckt und springt mit unter TCanvas die Eigenschaft Pixels entgegen. Das ist ein Array vom Typ TColor. Demnach liegen hier Deine Farben drin.
Jetzt guckste nur noch, ob das auch weiß ist (also zum Bleistift if Image1.Canvas.Pixels[0,0]=clWhite then....

Schüss
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Pixelabfrage bei Images

  Alt 13. Jul 2004, 19:10
Das wird so wahrscheinlich nicht funktionieren:
a) Bist du dir sicher, dass nie ein weisses Pixel in deiner Graphik vorkommt?
b) Die Linien können sich kreuzen, ohen gemeinsame Pixel zu haben. (siehe Anhang)

Du musst dir also erstmal eine andere Abfrage einbauen.

Falls du aber eine dickere Linie (width>2) zeichnest könntest du so was machen, allerdings müsstest du zuvor das gesamte Image nach weissen Pixeln absuchen und diese leicht verändern.
Miniaturansicht angehängter Grafiken
x.jpg  
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#4

Re: Pixelabfrage bei Images

  Alt 13. Jul 2004, 22:11
Ich war mir dieses Falles durchaus bewußt. Ich wollte lediglich einen Ansatz geben, damit Michaela erst mal weiß, wo ein Ansatz läge. Eine Möglichkeit wäre Folgende:

man könnte die benachbarten Pixel überprüfen. Sowohl links als auch rechts von der Geraden, bzw. drüber und drunter davon. Welche man nimmt, mu aus dem Geradenanstieg ermittelt werden (abs(Anstieg)<1 drüber und drunter, sonst links und rechts davon. Dadurch läßt sich dieser Kreuzungsfall vermeiden.

Andererseits bleibt stets zu berücksichtigen, daß, wie eben von Toxman erwähnt, im Bild sellbst ja auch weiße Gebiete vorkommen können. Gesetz den Fall, daß solche Geraden NUR in dem Programm erzeugt werden, könnte man diese ja in einer geeigneten Datenstruktur speichern. Dann kann man analytisch ermitteln, ob die neu eingezeichnete Gerade eine bereits erstelle schneidet.
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  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 08:07 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