Hexadezimal umwandlung funzt nicht ... (Farbcode)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ToeB

Betreff: Hexadezimal umwandlung funzt nicht ... (Farbcode)

BeitragFr, Jan 25, 2008 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich wollt mir zwei Funtionen schreiben, mit denen man von rgb in Hexadezimal umwandeln kann und umgekehrt... Ab er irwie ist das ergebniss immer ein anderes :

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()

Global h = $FFFFFFF
Repeat
Text 1,1,"Hex : "+Hex(h)
For i = 1 To 3
Text 1,1+i*20,"Dec : "+GetDec(h,i)
Next
Text 1,80,"Hex : "+Hex(GetHex(GetDec(h,1),GetDec(h,2),GetDec(h,2)))
Flip
Cls
Until KeyHit(1)
End

Function GetHex(red,green,blue)
Local Hexa
Hexa = red Shl 16 + green Shl 8 + blue
Return Hexa
End Function

Function GetDec(hexa,col_int)
Local col[3]
col[1] = (hexa And $FF0000)/$10000
col[2] = (hexa And $FF00)/$100
col[3] =  hexa And $FF
Return col[col_int]
End Function


Wisst ihr warum wenn ich aus 255,255,255 eine Hex-Zahl mache es 00FFFFF ergibt und wenn ich $FFFFFF hinschreibe nur 0FFFFFF ?

Danke schonmal....


[EDIT]
Arrow Neues Problem ....

Code: [AUSKLAPPEN]
Graphics 800,600,16,2
Global tt = CreateImage(100,100)
SetBuffer ImageBuffer(tt)
Color 255,0,255
Rect 0,0,100,100
SetBuffer BackBuffer()
Color 255,255,255
DrawImage tt,0,0
Local maskColor = GetHex(255,0,255)
Local lineColor = GetHex(255,255,255)
Local  LolColor = ReadPixel(1,1)
Cls
Text 1,1,Hex(maskColor)
Text 1,13,Hex(lineColor)
Text 1,26,Hex(LolColor)
Flip
WaitKey()
End


Function GetHex(red,green,blue)
Local Hexa
Hexa = red Shl 16 + green Shl 8 + blue
Return Hexa
End Function

Function GetDec(hexa,col_int)
Local col[3]
col[1] = (hexa And $FF0000)/$10000
col[2] = (hexa And $FF00)/$100
col[3] = hexa And $FF
Return col[col_int]
End Function

(Der Code ist aus meinem anderen Code zusammengestelltden ich noch nicht veröffentlichen will Wink )

[EDIT] Code nochmal angepasst ... [/EDIT]
Warum hat maskColor einen anderen Wert wie der Pixel aus dem Bild ???

Thx und mfg Crack93
  • Zuletzt bearbeitet von ToeB am Fr, Jan 25, 2008 18:50, insgesamt 2-mal bearbeitet

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Jan 25, 2008 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Text 1,80,"Hex : "+Hex(GetHex(GetDec(h,1),GetDec(h,2),GetDec(h,2)))

müßte heißen
Code: [AUSKLAPPEN]
Text 1,80,"Hex : "+Hex(GetHex(GetDec(h,1),GetDec(h,2),GetDec(h,3)))


ansonsten funktioniert das aber mit den beiden Funktionen.

Die erste zeile h= $FFFFFFF sind 7 x F
[BB2D | BB3D | BB+]

ToeB

BeitragFr, Jan 25, 2008 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Oh.... Embarassed

Danke !


[EDIT]
Also ich hab etwas rumprobiert und hab jetzt mal alles ausgeben lassen :

Code: [AUSKLAPPEN]
Global tt = CreateImage(100,100) 
SetBuffer ImageBuffer(tt) 
Color 255,0,255 
Rect 0,0,100,100 
SetBuffer BackBuffer() 
Color 255,255,255 
DrawImage tt,0,0 
Local maskColor = GetHex(255,0,255) 
Local lineColor = GetHex(255,255,255) 
Local  LolColor = ReadPixel(1,1) 
Cls 
Print "Mask: "+Hex(maskColor) 
Print "Line: "+Hex(lineColor) 
Print " Lol: "+Hex(LolColor)
Print "-------------------------------------"
For i = 1 To 3
Print i+" Col Mask : "+GetDec(MaskColor,i)
Next
Print "-------------------------------------"
For i = 1 To 3
Print i+" Col Line : "+GetDec(LineColor,i)
Next
Print "-------------------------------------"
For i = 1 To 3
Print i+" Col  LOl : "+GetDec(LolColor,i)
Next
Flip 
WaitKey() 
End 
 
 
Function GetHex(red,green,blue) 
     Local Hexa 
     Hexa = 255 Shl 24 + red Shl 16 + green Shl 8 + blue
     Return Hexa 
End Function 
 
Function GetDec(hexa,col_int) 
     Local col[3] 
     col[1] = (hexa And $FF0000)/$10000 
     col[2] = (hexa And $FF00)/$100 
     col[3] = hexa And $FF 
     Return col[col_int] 
End Function


Also bei mir kommt bei LolColor folgendes raus :
DebugLog hat Folgendes geschrieben:
r = 248
g = 0
b = 248


Warum ? Ich Check das nicht weil bei einem anderen klappt alles...

thx schonmal Crack93

[EDIT]
Also es liegt auf jeden Fall an ReadPixel weil die Functionen Einwandfrei Funzen !
[/EDIT]

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragFr, Jan 25, 2008 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
das ist ganz einfach, du hast nur 16bit Farbtiefe eingestellt

kannst du testen mit
Code: [AUSKLAPPEN]
Print GraphicsDepth ()+ " Bit Color"

ToeB

BeitragFr, Jan 25, 2008 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja ich weiß... bin grad auch drauf gekommen... Danke trotzdem !

mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group