Autor Beitrag
Laluna
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

Win XP
Delphi 2006
BeitragVerfasst: Di 17.04.07 09:11 
Hallo

ich möchte in einem angezeigten Bitmap ein Rechteck mit der Maus markieren und das markierte Rechteck abspeichern und auf die Pixel zurückgreifen. In jeder Pixelzeile soll immer das Pixel markiert bzw. gemerkt werden, was den größten Grauwert hat.
Kann mir jemand einen Tipp geben, wie ich das am Besten mache?
Wie markiere ich ein Rechteck und wie greife ich auf die Datenmatrix zurück?

Vielen Dank im Voraus,

laluna
Wonko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 69



BeitragVerfasst: Fr 18.05.07 14:58 
Hallo,

user profile iconLaluna hat folgendes geschrieben:

Kann mir jemand einen Tipp geben, wie ich das am Besten mache?


Bestimmt nicht die beste, aber zumindest eine Idee:

Mit OnMouseDown- und OnMouseUp-Events solltest Du an die Koordinaten Deines gezogenen Rechtecks kommen; es wäre hier bestimmt nicht verkehrt, wenn Dein bmp schon in Dein Programm eingebaut wäre.
Wenn Du den markierten Bereich z.B. in ein TImage "lädst", kannst Du Dir mit Pixels den Farbwert jedes Bildpunktes holen und daraus vielleicht den Grauwert berechnen (s. Wikipedia --> Grauwert ???).

Grüße
_frank_
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 343
Erhaltene Danke: 1

Win XP
Delphi 3 Prof / Turbo Delphi Explorer
BeitragVerfasst: Fr 18.05.07 19:35 
um an den Beitrag von Wonko anzuknüpfen...schau dir mal das an...
www.fw-web.de/downlo.../BitmapSelection.zip

dort wird gezeigt wie man mithilfe der onMouseDown/Up/Move eine einfache (ohne grab/move-Handler) Rechteckmarkierung erstellen kann.

ich hab das damals auch noch bisschen umfangreicher (mit den genannten handles) geschrieben. kommt halt drauf an, wie du es brauchst...hatte das auch mal irgendwo gepostet...

//edit
gefunden...hier:
www.delphi-forum.de/viewtopic.php?t=63639
im letzten Beitrag :)

//nochmal edit:
was verstehst du unter "größter Grauwert".
falls das folgende noch nicht bekannt sein sollte...
Farben in der EDV sind durch Rot-, Grün und Blau-kanal (Grundfarben des sichtbaren Lichtspektrums) definiert. je höher der Wert desto heller die Farbe. Bei Grau haben alle Kanäle den gleichen Wert (zumindest annähernd).
ein "Grau" mit vollem Wert ist weiß und mit 0 ist Schwarz.
den Farbscan an sich würde ich mit Scanline machen.

Gruß Frank