Html Farbwerte in RGB umwandeln
Übersicht

bujaBetreff: Html Farbwerte in RGB umwandeln |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo mal wieder..
Ich hab ein Problem, undzwar muss ich einen html farbwert wie z.B: #FFFFFF in die einzelnen R,G,B Farbwerte umwandeln. Allerdings fehlt es mir leider an Mathematik (8. Klasse Gymnasium^^) dazu. Ich habe mir überlegt, dass man das FFFFFF in FF * FF * FF zerlegen muss. (Hoffe mal das ist richtig) für Rot Grün Blau. mein Code sieht so aus: Code: [AUSKLAPPEN] farbe = $FFFFFF ;Diese Farbe soll aber beliebig umtauschbar sein. temp_farbe$ = farbe ;Die Temporäre Farbe für umrechnen. Ich hab aber keine Ahnung wie man die einzelnen R,G,B Werte rausbekommen kann. Ich habe es mit Left, Right und Mid versucht, aber rausgekommen ist da nichts gutes -.- Das kann aber theoretisch nicht klappen, oder weil das FFFFFF ja FF*FF*FF bedeutet und nicht FF+FF+FF Wenn jemand einen Code posten könnte wäre ich dankbar. Ich hab mir vieles bei Google zum Thema durchgelesen, aber die Mathematischen Sachen dabei hab ich nicht wirklich verstanden, um es im Code umzusetzen ![]() |
||
... |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei diesem Befehl steht das mit bei:
writepixelfast ![]() |
||
Starfare: Worklog, Website (download) |
buja |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
cool danke dir ![]() |
||
... |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Farbwerte sind 24 Bit groß. 8 Bit teilen sich in 2 Nibble (sind 4 Bit groß) auf und 2^4 = 16 Kombination bzw. 0-9 & A-F. Deswegen sind die 6 Nibble bzw. 3 Byte im Format RRGGBB.
$00RRGGBB bekommst du mit Bitoperationen wieder zerlegt. Wenn du den Wert um 16 Bit nach rechts schiebst, kommt das dabei heraus: $00RRGGBB Shr 16 = $000000RR, du hast also den Rotanteil isoliert. Beim Grünanteil wirds schwerer. Du schiebst erst den Wert um 8 Bit nach rechts: $00RRGGBB Shr 8 = $0000RRGG und hast jetzt nur noch den Grün- und Rotanteil. Um den Grünanteil zu Filtern brauchst du eine Bitmaske $000000FF. Hier sind die letzten 8 Bit bzw. letzten beiden Nibble gesetzt: $0000RRGG And $000000FF = $000000GG Beim Blauanteil brauchst du nur noch eine Bitmaske, da die 2 Nibble schon an rechter Stelle stehen: $00RRGGBB And $000000FF = $000000BB http://vertex.dreamfall.at/articles.php da gibt es ein Assemblertutorial wo die Stellensysteme und deren Umrechnungen beschrieben sind. mfg olli |
||
vertex.dreamfall.at | GitHub |
buja |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke oli,
ich werd es mir durchlesen, damit ich das prinzip verstehe |
||
... |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Blitz bietet diese Funktion auch ggf. vom Haus aus:
Code: [AUSKLAPPEN] Color 0,0,$FF0000
Print "ich bin farbig" WaitKey End |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
buja |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@hectic: Ich muss aber die einzelnen R,G,B Werte herausfilter.
Trotzdem danke. @Vertex: Kannst du einen gesamten Code reinschreiben? Ich verstehe es immer noch nicht, hab versucht das zu kapieren, aber ich kriegs nicht hin ![]() |
||
... |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] ARGB% = $11223344
; $11223344 Shr 24 = $00000011 Alpha% = ARGB Shr 24 ; $11223344 Shr 16 = $00001122 ; ; $00001122 ; And $000000FF ; ------------- ; $00000022 Red% = (ARGB Shr 16) And $000000FF ; $11223344 Shr 8 = $00112233 ; ; $00112233 ; And $000000FF ; ------------- ; $00000033 Green% = (ARGB Shr 8) And $000000FF ; $11223344 ; And $000000FF ; ------------- ; $00000044 Blue% = ARGB And $000000FF Mach dich mal mit dem Bitgeschupse, sprich Shr und Shl vertraut! Bitmasken usw. wirst du nämlich später auch mal bei Flags brauchen. Da werden in einem Integerwert gleich mehrere Ja/Nein-Zustände (bei einem Dateisystem bspw. Lese-, Ausführ- und Schreibrechte o.ä.) mfg olli |
||
vertex.dreamfall.at | GitHub |
buja |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ Vertex, danke für deine Hilfe und bemühungen.
Ich werde mir das wohl oder übel aneignen müssen mit bits umzugehen (nur im moment bin ich wegen nem projekt unter zeitdruck) Es ist wirklich schön dass sich jemand bemüht einem n00b was beizubringen. Aber darf ich dich auch fragen wie das ist wenn in meiner Farbe der Alphawert nicht gespeichert ist (oder bereits herausgefiltert wurde?) ![]() ich hab meine Farbe nämlich nur nach dem Schema $RRGGBB den alphawert aus $AARRGGBB habe ich gar nicht in der farbvariable drin. (sorry wenn das wo aussieht als würde ich nur copy and paste machen. Ich versuche normalerweise so viel wie möglich selbst zu erarbeiten und mir wissen anzueignen, nur manchmal ist das dann doch zu komplex um es mal eben zu kapieren für mich ![]() [EDIT:] Achso, ich hab das glaub ich verstanden. Wenn da FFFFFF steht und kein alpha ist alpha gleich 0 weil die bits ja nur verschoben damit sie am ende stehen oder? Also macht das keinen unterschied ob die zahl $AARRGGBB heißt oder $RRGGBB solange man kein Alpha braucht? |
||
... |
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genau, ob da nun Nullen oder gar nichts davor steht, ändert nicht den Wert. Ist wie im Dezimalsystem:
00123 ist immer noch 123 genauso ist $FF wertmäßig das selbe wie $000000FF. Und $RRGGBB ist ausführlich $00RRGGBB. Was aber den Wert ändert, ist die Stelle. $FF (255) ist nicht das selbe wie $FF00 (65280). Deswegen müssen die RGB-Werte auch immer nach rechts (mit Shr) geschoben werden. mfg olli |
||
vertex.dreamfall.at | GitHub |
buja |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke, so im groben hab ich dann also verstanden ![]() ich werd aber wenn ich zeit hab mal dein assembler tutorial anschauen, das schaut interessant aus. Auf jeden Fall danke dass du dir die Zeit genommen hast ![]() |
||
... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group