Seite 1 von 1

Hex-Wert aus ColorRequester() auslesen

Verfasst: 04.01.2009 14:50
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?

Verfasst: 04.01.2009 15:11
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

Verfasst: 04.01.2009 15:17
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.

Verfasst: 04.01.2009 17:10
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