Html Farbwerte in RGB umwandeln

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

buja

Betreff: Html Farbwerte in RGB umwandeln

BeitragMi, Mai 07, 2008 18:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Sad[/code]
...

ZaP

BeitragMi, Mai 07, 2008 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei diesem Befehl steht das mit bei:

writepixelfast
Starfare: Worklog, Website (download)
 

buja

BeitragMi, Mai 07, 2008 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
cool danke dir Wink
...

Vertex

BeitragMi, Mai 07, 2008 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Mai 07, 2008 19:05
Antworten mit Zitat
Benutzer-Profile anzeigen
danke oli,
ich werd es mir durchlesen, damit ich das prinzip verstehe
...

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Mai 07, 2008 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Mai 07, 2008 20:15
Antworten mit Zitat
Benutzer-Profile anzeigen
@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 Sad
...

Vertex

BeitragMi, Mai 07, 2008 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Mai 08, 2008 13:51
Antworten mit Zitat
Benutzer-Profile anzeigen
@ 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?) Embarassed

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 Sad

[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

BeitragDo, Mai 08, 2008 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Mai 08, 2008 20:09
Antworten mit Zitat
Benutzer-Profile anzeigen
danke, so im groben hab ich dann also verstanden Smile
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 Wink
...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group