Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
jensma

Anmeldungsdatum: 16.05.2005 Beiträge: 85 Wohnort: Gleich neben Frankfurt, zwei Zimmer neben Lloyd!
|
Verfasst am: 04.10.2007, 14:54 Titel: point in rgb? |
|
|
Hi,
ich möchte den RGB-Wert eines Pixels im 24bit-Farbmodus auslesen. Geht das? Ich bekomme entweder negative oder - wenn ich die Variable als longint-Datentyp dimensioniere - den Maximalwert von 18446744073709551615, egal welchen Pixel ich auslese.
Im 8bit-Modus ist das ja kein Problem, aber bei höheren Farbmodi scheitere ich.
Gibt es da eine Lösung/Alternative ?
LG, jensma |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 04.10.2007, 15:16 Titel: |
|
|
Hallo, der Datentyp sollte Integer, bzw die Vorzeichenlose Variante Uinteger (=unsigned integer) sein.
Code: | Dim As Uinteger farbe
Screen 18,24
Line(0,0) - (100, 100), &Hff0000, bf 'zeichnet ein rotes ausgefülltes rechteck
farbe = Point(10, 12) 'gibt den Farbwert des Pixels an position x=10, y=12 zurück
Print farbe 'sollte nicht mehr negativ sein
Print Hex(farbe) 'der Hexadezimalwert des Pixels --> ff0000
|
_________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
jensma

Anmeldungsdatum: 16.05.2005 Beiträge: 85 Wohnort: Gleich neben Frankfurt, zwei Zimmer neben Lloyd!
|
Verfasst am: 04.10.2007, 15:26 Titel: |
|
|
Hi, das funktioniert schon mal prima!
Wenn ich auf einen schwarzen Pixel zeige, bekomme ich ff000000, bei deinem roten Beispiel ff0000. Irgendwie blicke ich da nicht ganz durch, wie lassen sich die Werte in ein RGB-Format umwandeln? Ich denke da an eine Form à la 255,255,255  |
|
Nach oben |
|
 |
Michael712 aka anfänger, programmierer
Anmeldungsdatum: 26.03.2005 Beiträge: 1593
|
Verfasst am: 04.10.2007, 15:38 Titel: |
|
|
Code: | Sub int_to_rgb(col As UInteger, Byref r As Ubyte, Byref g As Ubyte, Byref b As Ubyte)
r = col shr 16
g = col shr 8
b = col
End sub |
Gerade zusammengebastelt, sollte klappen (solange r, g, und b ubyte bleiben).
Aufruf wäre so:
Code: | Dim As Ubyte rot, gruen, blau
.... 'siehe oben
int_to_rgb(Point(10, 12), r, g, b) |
_________________
Code: | #include "signatur.bi" |
|
|
Nach oben |
|
 |
jensma

Anmeldungsdatum: 16.05.2005 Beiträge: 85 Wohnort: Gleich neben Frankfurt, zwei Zimmer neben Lloyd!
|
Verfasst am: 04.10.2007, 16:04 Titel: |
|
|
Mhh....
 |
|
Nach oben |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
|
Nach oben |
|
 |
jensma

Anmeldungsdatum: 16.05.2005 Beiträge: 85 Wohnort: Gleich neben Frankfurt, zwei Zimmer neben Lloyd!
|
Verfasst am: 04.10.2007, 16:29 Titel: |
|
|
Jetzt klappt es reibungslos
Danke für die nette Hilfe  |
|
Nach oben |
|
 |
|