Seite 1 von 2

Colorequester

Verfasst: 22.06.2006 17:16
von Rockmaster
Der Colorrequester liefert wie ihr wisst den 24bit wert einer ausgewählten Farbe zurück.
Diesen Wert kann man in rot, blau und grün werte übersetzen.
Aber wie übersetzt man den Wert in einen Hexdezimalwert? (z.B. #FFFFFF für weiß)
Ich brauche das nämlich für ein HTML-Programm um farben zu bestimmen und html akzepitert halt nur hexdezimale farben...
Gibt es eine spezielle Funktion dafür?

Verfasst: 22.06.2006 17:17
von Alves
HTML akzeptiert auch Farbnamen.

Verfasst: 22.06.2006 17:28
von edel

Code: Alles auswählen

Color = ColorRequester()
debug "#"+Hex(Color)

Verfasst: 22.06.2006 17:56
von #NULL
du must aber noch alle hex-stellen auf 2 zeichen bringen, damit du am ende immer 6 zeichen erhältst.

Code: Alles auswählen

; RGB(rot,gruen,blau)  !!!
; $BlauGruenRot        !!!  (auch in html?)

Procedure.s bit24ToHex(rgb.l)
  hexB$ = Hex(Blue(rgb))
  If Len(hexB$)=1
    hexB$="0"+hexB$
  EndIf
  
  hexG$ = Hex(Green(rgb))
  If Len(hexG$)=1
    hexG$="0"+hexG$
  EndIf
  
  hexR$ = Hex(Red(rgb))
  If Len(hexR$)=1
    hexR$="0"+hexR$
  EndIf
  
  hexRGB$ = hexB$+hexG$+hexR$
  ProcedureReturn hexRGB$
EndProcedure

htmlColor$="#"+bit24ToHex( RGB(255,0,1) )
Debug htmlColor$


Verfasst: 22.06.2006 18:12
von Deeem2031
HTML will aber #RRGGBB und nich #BBGGRR.

Code: Alles auswählen

Color = RGB(255,0,1) 
Debug "#"+RSet(Hex( ((Color&$FF)<<16)|(Color&$FF00)|((Color&$FF0000)>>16) ),6,"0")

Verfasst: 22.06.2006 18:14
von Rockmaster
Alves hat geschrieben:HTML akzeptiert auch Farbnamen.
Ja weis ich aber es gibt leider nicht 6 millionen verschiedene Farbnamen :D

Danke ich werds so wie im beipiel versuchen!

Verfasst: 22.06.2006 18:16
von Alves
Nicht?

Verfasst: 22.06.2006 22:16
von AND51
Rockmaster hat geschrieben:Ja weis ich aber es gibt leider nicht 6 millionen verschiedene Farbnamen :D
richtig, denn es gibt sogar ganze 16.777.216 (~16,8 millionen) Farben


Warum machst du das nicht so, das Beispiel würde ich auch besser verstehen als Deeem's:

Code: Alles auswählen

color=RGB(152, 255, 34)
html$="#"

If Red(color) < $F ; Anmerkung: $F = 15
   html$+"0"+Hex(Red(color))
Else
   html$+Hex(Red(color))
EndIf
Verstehste? Alle Farben R, G und B einzeln durchgehen und ggf. vornullen, wenn die Werte kleiner als $F, also 15 sind.

Verfasst: 22.06.2006 22:21
von #NULL
wenn, dann
Red(color) <= $F

Verfasst: 22.06.2006 22:22
von AND51
Ja, ich war ir grad nicht ganz sicher, aber was ich auf jeden Fall vermittlen wollte, wr das Prinzip. tolle ausrede, nicht? :mrgreen: :lol: