Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

point in rgb?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
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!

BeitragVerfasst am: 04.10.2007, 14:54    Titel: point in rgb? Antworten mit Zitat

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 lächeln?

LG, jensma
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 04.10.2007, 15:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
jensma



Anmeldungsdatum: 16.05.2005
Beiträge: 85
Wohnort: Gleich neben Frankfurt, zwei Zimmer neben Lloyd!

BeitragVerfasst am: 04.10.2007, 15:26    Titel: Antworten mit Zitat

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 lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 04.10.2007, 15:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
jensma



Anmeldungsdatum: 16.05.2005
Beiträge: 85
Wohnort: Gleich neben Frankfurt, zwei Zimmer neben Lloyd!

BeitragVerfasst am: 04.10.2007, 16:04    Titel: Antworten mit Zitat

Mhh....

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

BeitragVerfasst am: 04.10.2007, 16:13    Titel: Antworten mit Zitat

Code:
...
declare sub int_to_rgb(col As UInteger, Byref r As Ubyte, Byref g As Ubyte, Byref b As Ubyte)

...
int_to_rgb(rot, gruen, blau)
zwinkern
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
jensma



Anmeldungsdatum: 16.05.2005
Beiträge: 85
Wohnort: Gleich neben Frankfurt, zwei Zimmer neben Lloyd!

BeitragVerfasst am: 04.10.2007, 16:29    Titel: Antworten mit Zitat

Jetzt klappt es reibungslos lächeln

Danke für die nette Hilfe grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz