rgb in Farbtiefe, Sättingung, Helligkeit und zurück
Übersicht

![]() |
TheProgrammerBetreff: rgb in Farbtiefe, Sättingung, Helligkeit und zurück |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi.
erstma folgendes Spektrum: ![]() Die Farbtiefe entspricht der x-Achse in diesem Spektrum (0-239) von links nach rechts Die Sättigung entspricht der y-Achse in diesem Spektrum (0-240) von unten nach oben und die Helligkeit muss individuell berechnet werden. (vgl. MS Paint ![]() Das wäre eine Möglichkeit, um den rbg-wert zu "picken". Aber wie rechnet man jetzt einen rgb-wert in diese anderen drei werte um? Wenn jemand eine Ahnung hat, dann soll er seine Gedanken hier posten. ^^ Ich hoffe auf eine eindeutige und richtige Antwort. Mfg TheProgrammer |
||
aktuelles Projekt: The last day of human being |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich Dich richtig verstanden habe willst Du den Wert den WritePixel(Fast) zurückgibt in Color-kompaible Werte umrechnen?
Onlinehilfe hat Folgendes geschrieben: Berechnung der Farbanteile aus einem Farbcode:
Wenn nicht, dann... nicht a=(rgb AND $FF000000)/$1000000 r=(rgb AND $FF0000)/$10000 g=(rgb AND $FF00)/$100 b=rgb AND $FF Berechnung des Farbcodes aus den Farbanteilen: rgb=a*$1000000 + r*$10000 + g*$100 + b Berechnung der Farbwerte ohne Alpha: rgb2=rgb AND $FFFFFF ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hätte gerne die werte
Rot, Grün, Blau in Farbtiefe, Sättigung, Helligkeit umgerechnet ^^ |
||
aktuelles Projekt: The last day of human being |
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Helligkeit is ganz easy: Addier die drei werte, und Teil sie durch 3
Für die andren ka, ma nach googeln. |
||
nobody |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
BORNtobeNAMELESS hat Folgendes geschrieben: Helligkeit is ganz easy: Addier die drei werte, und Teil sie durch 3
Für die andren ka, ma nach googeln. Klappt nicht wirklich =o Bsp: R:255;G:0;B:0; =255/3 =85 H:240;S:100;B:100; Selbst wenn es Sättigung oder Farbtiefe angeben sollte, stimmt das nicht. |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schätze er meint HSV, also Hue - Saturation - Value (oder so ähnlich)...
Kleiner Schnipsel aus XUI2... Originalcode ist von EPS also Credits an ihn !!! Code: [AUSKLAPPEN] Global xui2rgbr,xui2rgbg,xui2rgbb
Global xui2hsvh,xui2hsvs,HSL_L ;--------------------------------------------- ; RGB nach HSV ;--------------------------------------------- Function XUI2_RGB2HSV () Min = XUI2_GetMin(xui2rgbr, xui2rgbg, xui2rgbb) Max = XUI2_GetMax(xui2rgbr, xui2rgbg, xui2rgbb) Minus# = Max - Min Plus# = Max + Min HSL_L = ((Plus * 240) + 255) / (2 * 255) If Max = Min Then xui2hsvh = 0 xui2hsvs = 0 Else If HSL_L <= (240 / 2) Then xui2hsvs = ((Minus * 240) + 0.5) / Plus Else xui2hsvs = ((Minus * 240) + 0.5) / (2 * 255 - Plus) End If RDelta = (((Max - xui2rgbr) * 40) + 0.5) / Minus GDelta = (((Max - xui2rgbg) * 40) + 0.5) / Minus BDelta = (((Max - xui2rgbb) * 40) + 0.5) / Minus Select Max Case xui2rgbr xui2hsvh = BDelta - GDelta Case xui2rgbg xui2hsvh = 80 + RDelta - BDelta Case xui2rgbb xui2hsvh = 160 + GDelta - RDelta End Select While xui2hsvh < 0 xui2hsvh = xui2hsvh + 240 Wend xui2hsvh = xui2hsvh Mod 240 End If End Function ;--------------------------------------------- ; HSV nach RGB ;--------------------------------------------- Function XUI2_HSV2RGB () H = xui2hsvh S = xui2hsvs V = HSL_L If S = 0 Then R = (V * 255) / 240 G = R B = R Else If V <= 240 / 2 Then Magic2 = (V * (240 + S) + 120) / 240 Else Magic2 = V + S - ((V * S) + 120) / 240 End If Magic1 = 2 * V - Magic2 R = (XUI2_H2RGB(Magic1, Magic2, H + 80) * 255 + 120) / 240 G = (XUI2_H2RGB(Magic1, Magic2, H) * 255 + 120) / 240 B = (XUI2_H2RGB(Magic1, Magic2, H - 80) * 255 + 120) / 240 End If If R<0 Then R=0 If R>255 Then R=255 xui2rgbr = R If G<0 Then G=0 If G>255 Then G=255 xui2rgbg = G If B<0 Then B=0 If B>255 Then B=255 xui2rgbb = B End Function ;--------------------------------------------- ;Sub-Funktionen ;--------------------------------------------- Function XUI2_H2RGB (mag1,mag2,Hue) If Hue < 0 Then Hue = Hue + 240 Else If Hue > 240 Then Hue = Hue - 240 End If If Hue < 40 Then Ret = (mag1 + (((mag2 - mag1) * Hue + 20) / 40)) Else If Hue < 120 Then Ret = mag2 Else If Hue < 160 Then Ret = (mag1 + (((mag2 - mag1) * (160 - Hue) + 20) / 40)) Else Ret = mag1 End If End If End If Return Ret End Function Function XUI2_GetMin (a,b,c) Min=a If b<Min Then Min=b If c<Min Then Min=c Return Min End Function Function XUI2_GetMax (a,b,c) Max=a If b>Max Then Max=b If c>Max Then Max=c Return Max End Function So, das Ganze funktioniert über die Globalen. Also Farbwerte in die Globalen eintragen, Konvertieren, Farbwerte aus den Globalen auslesen ! Have fun |
||
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Dank ![]() Ich schaus mir gleich an! ![]() edit: Welcher Buchstabe gehört jetzt zu welchem? Mein Vorschlag: H - Helligkeit S - Sättigung V - Farbtiefe passt das so? |
||
aktuelles Projekt: The last day of human being |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Guckst du hier !!! ![]() demnach ist: Zitat: H = Farbton
S = Sättigung V = Helligkeit greetz |
||
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielen Dank nochmal!!! ![]() Wer sich für das Resultat interessiert: ![]() Screen |
||
aktuelles Projekt: The last day of human being |
David |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi!
Nur nochmal am Rande. Es handelt sich nicht um die Farbtiefe sondern den Farbton, wie d-bug schon richtig bemerkte! ![]() grüße |
||
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mensch TheProgrammer, ist die FPS Anzeige da mit oder ohne Vsynch ?
Wenn sie ohne ist, dann solltest du dir nochmal Gedanken über deine GFX-Routinen machen ![]() greetz |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group