Farbcode

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Chaos Melone

Betreff: Farbcode

BeitragFr, Jul 31, 2009 15:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
ich brauche für mein Spiel die Farbcodes von Dunkelgrau (50,50,50) und Schwarz (0,0,0).
Ich weiss dass es hier Erklärungen gibt, wie man das umrechnet, aber die verstehe ich nicht Sad
Kann mir jemand erklären wie das geht (so dass ichs verstehe^^),
oder einfach schnell die Codes für die beiden Farben oben sagen (brauche kein Alpha)...
Wäre sehr nett

mfg

Nicdel

BeitragFr, Jul 31, 2009 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau mal hier: WritePixel
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

Chaos Melone

BeitragFr, Jul 31, 2009 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Genau das hab ich schon gelesen Confused
Aber eben nicht verstanden.... Also:

Zitat:

FF FF FF FF - Farbcode in einem Integerwert
=> vier Informationen (je 00-FF = 256 Werte pro Information)
1.: Beinhaltet Alpha-Information 255 (FFh), erst ab Blitz3D ist Alpha voll verfügbar
2.: Rotanteil 0-255 (0h-FFh)
3.: Grünanteil 0-255 (0h-FFh)
4.: Blauanteil 0-255 (0h-FFh)


Was sollen z.B. die "h" da oben? (0h-FFh)
Und wie zählt man von 0 bis FF? 0 ist eine Zahl, FF zwei Buchstaben Confused

Eingeproggt

BeitragFr, Jul 31, 2009 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du die Beschreibung ned verstehst, dann nimm einfach die fertige Formel, die im Absatz darunter steht:

Code: [AUSKLAPPEN]
rgb = a*$1000000 + r*$10000 + g*$100 + b


In deinem Fall also:

Code: [AUSKLAPPEN]
dunkelgrau = 50*$10000 + 50*$100 + 50
schwarz=0 ;Da brauch ich nicht viel rechnen ;-)


mfG, Christoph.

EDIT: PS: Die Berechnung stimmt nur für 2D, da dort Alpha immer verwendet wird. Auf einer 3D-Textur zB würden die Punkte unsichtbar sein (durchsichtig) da Alpha=0 gerechnet wird. Willst du Alpha dabei haben, einfach in obige Formel a=255 oder was auch immer einsetzen.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Chaos Melone

BeitragFr, Jul 31, 2009 15:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Aah gute Idee Wink
Dankeschön klappt jetzt alles Smile

mfg

Nicdel

BeitragFr, Jul 31, 2009 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, eigentlich meinte ich auch die Formel Wink
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

DjDETE

BeitragFr, Jul 31, 2009 16:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Die 2 Zahlen/Buchstaben sind im Hex-Format, soll heißen du musst aus den Buchstaben A-F die Zahlen 10-15 machen und dann einfach die 2 Zahlen multiplizieren.
MfG
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.

Eingeproggt

BeitragFr, Jul 31, 2009 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider falsch... Demnach wäre 12h also 2 (1*2)?

Es berechnet sich so:

12h=1*16+2=18

oder

FAh=15*16+10=250

(Nur als Beispiel. Erklären kann ichs auch aber dann wirds vermutlich wieder nicht verstanden)

EDIT: Na schön, Holzchopf war ausführlicher Wink
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
  • Zuletzt bearbeitet von Eingeproggt am Fr, Jul 31, 2009 16:32, insgesamt einmal bearbeitet

Holzchopf

Meisterpacker

BeitragFr, Jul 31, 2009 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, nicht einfach multiplizieren! Sonst wäre ja 0F (0 * 15) = F0 (15 * 0) = 0.

Es ist halt ein 16er Zahlensystem (eben Hexadezimal), um von dem wieder ins Dezimale umzurechnen, immer schön <Wert der Ziffer> * 16 ^<Stelle der Ziffer (von hinten gezählt, hinterste Stelle = 0)>

Bei 2-Stelligen Hex-Zahlen also ganz einfach:

Vordere Ziffer *16 +Hintere Ziffer

zB:
90h (das h kennzeichnet die Zahl als Hex-Notation) = 9 *16 +0 = 144
F0h = 15 *16 +0 = 240
1Fh = 1 *16 +15 = 31

mfG


Edit
Naschön, Eingeproggt war schneller =(
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

DaysShadow

BeitragFr, Jul 31, 2009 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Also normalerweise geht das doch so oder?

BlitzBasic: [AUSKLAPPEN]
Local argb%
Local a% = 255 ; oder in Hex $FF
Local r% = 127 ; oder in Hex $7F
Local g% = 0 ; Hex $00
Local b% = 0 ; Hex $00

;Variable für WritePixel z.B.
argb = a Shl 24 + r Shl 16 + g Shl 8 + b


;Zum Auslesen der Komponenten a,r,g und b von argb, wenn man z.b. mit ReadPixel etwas eingelesen hat
a = (argb Shr 24) And $FF
r = (argb Shr 16) And $FF
g = (argb Shr 8) And $FF
b = argb And $FF


Und wenn du einfach nur von einer normalen Zahl den HexCode haben willst gibts erstens genug Umwandler im Netz und zweitens kann du auch den Einzeiler "Print Hex(Deine_Zahl)" in BB benutzen...
Blessed is the mind too small for doubt
 

DjDETE

BeitragFr, Jul 31, 2009 17:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Schande über mich Embarassed
Aktuelles Projekt: XXX |XXX | 3% der v1b fertig
www.emu-soft.de.vu Für die Homepage suche ich noch Linktauschpartner, bei Interesse einfach melden.

Noobody

BeitragFr, Jul 31, 2009 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
DaysShadow hat Folgendes geschrieben:
Also normalerweise geht das doch so oder?

Das ist grundsätzlich dasselbe; deine Version ist einfach ein wenig schneller Razz

Wer es noch schneller haben will, kann es ja so machen: BlitzBasic: [AUSKLAPPEN]
Local A% = 255
Local R% = 127
Local G% = 0
Local B% = 0

Local ARGB = ( A Shl 24 ) Or ( R Shl 16 ) Or ( G Shl 8 ) Or B
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group