Hex-Wert aus ColorRequester() auslesen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Hex-Wert aus ColorRequester() auslesen

Beitrag von Mok »

Hi!

Ich hab mir gerade den Beispielcode für ein ColorRequester() aus der Hilfe kopiert und ein wenig rumprobiert!

Code: Alles auswählen

  Farbe.l = ColorRequester()
  If Farbe > -1
    a$ = "Sie haben folgende Farbwerte ausgewählt:" + Chr(10)  ; Chr(10) wird nur
    a$ + "24 Bit Wert: " + Str(Farbe)               + Chr(10)  ; für den Zeilen-
    a$ + "Rot-Wert:    " + Str(Red(Farbe))          + Chr(10)  ; umbruch benötigt
    a$ + "Grün-Wert:  " + Str(Green(Farbe))         + Chr(10)
    a$ + "Blau-Wert:   " + Str(Blue(Farbe))
  Else  
    a$ = "Der Requester wurde abgebrochen."
  EndIf
  MessageRequester("Information", a$, 0)
  End
Man kann eine Farbe auswählen, anschließend wird der 24-Bit-Wert ausgegeben, sowie Rot-, Grün- und Blauanteil.
Meine Fragen:
1) Wie kann man/kann man auch den Hex-Wert auslesen? (z. B. FF0324)
2) Was ist der 24-Bit-Wert? und gibt's auch einen 32-Bit-Farbwert?
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Code: Alles auswählen

Hex(Farbe)
ergibt den Hex-Wert
Das entspricht dem Wert der auch verwendet wird wenn du als Farbe $FF0000 für Blau schreibst

und die Farben sind 24Bit weil sie aus 3 mal 8Bits bestehen also RGB halt
32Bit wäre mit Alphakanal wie zB bei PNG-Bildern
außerdem ist es für das System schneller mit 32Bit zu rechnen und den Alphawert zu ignorieren wenn man nur RGB hat
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

1)

Code: Alles auswählen

  Farbe.l = ColorRequester()
  If Farbe > -1
    a$ = "Sie haben folgende Farbwerte ausgewählt:" + #CRLF$
    a$ + "24 Bit Wert: " + Str(Farbe)               + #CRLF$
    a$ + "24 Bit HEX: " + Hex(Farbe)               + #CRLF$
    a$ + "Rot-Wert:    " + Str(Red(Farbe))          + #CRLF$
    a$ + "Grün-Wert:  " + Str(Green(Farbe))         + #CRLF$
    a$ + "Blau-Wert:   " + Str(Blue(Farbe))
  Else 
    a$ = "Der Requester wurde abgebrochen."
  EndIf
  MessageRequester("Information", a$, 0)
  End 
2)
ein Farbwert auf dem Computer besteht auf drei Farbkanälen, Rot, grün und Blau.
es kann ein vierter Kanal hinzukommen, der sogenannte Alpha-Kanal, der bezeichnet einen Transparenzwert.

bei 24bit Farben besitzt jeder Farbkanal 8bit, also 1byte rot, 1byte grün, 1byte blau.
bei 32bit kommt der Alpha-Kanal hinzu, also nochmal 8bit/1byte obendrauf für die transparenz.

bei 16bit farben (siehe Desktopeinstellungen) ist die Farbe in 5bit rot, 6bit grün, 5bit blau aufgeteilt.

es gibt auch noch detailliertere Farbdarstellungen, z.b. 48bit RGB oder 64bit RGBA, da hat jeder Kanal 16bit.
das ist für Bildschirmdarstellung nicht notwendig, aber für Effektberechnungen sehr praktisch,
weil beim übereinanderzeichnen von zig Ebenen die Abweichungen minimiert werden.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Beitrag von Mok »

@Kaerus erstes:
Ach ja, das hamma ja schon hier gehabt: http://www.purebasic.fr/german/viewtopic.php?t=16827
Aba trotzdem danke! (Dürft wohl ins Kurzzeitgedächtnis gerutscht sein)

@Hex()
Och menno, darauf hätt ich kommen können :lol:
Ich glaub ich muss mir mal den gesamten Befehlsindex von PB4.3 durchlesen
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Antworten