rgb in Farbtiefe, Sättingung, Helligkeit und zurück
Übersicht BlitzBasic
 BlitzBasic  Allgemein
 Allgemein|   | TheProgrammerBetreff: rgb in Farbtiefe, Sättingung, Helligkeit und zurück |  Fr, Dez 30, 2005 12:19 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 |  Fr, Dez 30, 2005 12:28 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 |  Fr, Dez 30, 2005 12:39 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 |  Fr, Dez 30, 2005 12:41 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 |  Fr, Dez 30, 2005 14:53 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 |  Fr, Dez 30, 2005 15:08 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 |  Fr, Dez 30, 2005 18:16 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 |  Fr, Dez 30, 2005 19:04 Antworten mit Zitat   | 
|---|---|---|
| Guckst du hier !!!   demnach ist: Zitat: H = Farbton
 S = Sättigung V = Helligkeit greetz | ||
|   | TheProgrammer |  Fr, Dez 30, 2005 22:46 Antworten mit Zitat   | 
|---|---|---|
| Vielen Dank nochmal!!!   Wer sich für das Resultat interessiert:   Screen | ||
| aktuelles Projekt: The last day of human being | ||
| David |  Sa, Dez 31, 2005 1:36 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 |  Sa, Dez 31, 2005 13:22 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
 BlitzBasic
 BlitzBasic  Allgemein
 Allgemein
					Powered by phpBB © 2001 - 2006, phpBB Group
				



