 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
hunggar
Anmeldungsdatum: 04.08.2008 Beiträge: 32 Wohnort: Karlsruhe
|
Verfasst am: 08.09.2008, 11:23 Titel: Grafikproblem: farbiger Text wird nicht immer umgesetzt |
|
|
Hallo Programmierfreunde,
ich stehe vor folgendem Problem:
Ich habe ein Programm erstellt, in dem die Textfarbe und die Hintergrundfarbe immer wieder neu definiert werden.
Dazu benutze ich:
Das klappt aber nicht immer.
Wenn ich eine Farbänderung der Schrift oder des Hintergrundes hervorrufen möchte,
werden sowohl Text als auch Hintergrund manchmal undefiniert schwarz.
Ich kann aber nicht feststellen, warum es mal klappt, und mal nicht.
Liegt es möglicherweise daran ?
Dies ist Zeile Nummer 1 im Programm.
Ich habe jetzt mal testweise direkt am Anfang folgendes geschrieben:
Code: | SCREEN 19,32,,1
Color 10,16
Print"Zufall"
Sleep
Color 8,12
Print"Zufall"
Sleep |
Sollte eigentlich funktionieren.
Wenn ich solche COLOR-Pasagen irgendwo im Programm bringe, klappt es manchmal ...
Aber hier, direkt am Anfang klappt es nicht.
Könnte es an den Grafik-Einstellungen meines Rechners liegen ?
Ich bin total ratlos.
Vielleicht kann mir ja jemand was zu dem Thema sagen ...
Vielen Dank schon jetzt für die Hilfe.
HungGar |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 08.09.2008, 14:18 Titel: |
|
|
Mit SCREEN 19,32,,1 definierst du einen 32bit-Farbraum, da werden die Farben mittels &hRRGGBB angegeben. RR, GG und BB sind dann jeweils die hexadezimalen Zahlen für Rot-, Grün- und Blauton (00-FF). Möchtest du lieber mit dem Zahlenbereich 0-255 arbeiten, dann gibt es eine extra Funktion RGB(RR, GG, BB), wobei nun RR, GG und BB durch den Rot-, Grün- und Blaubereich von 0-255 ersetzt werden müssen.
Grundsätzlich ergeben höhere Werte auch hellere Farben, weshalb 15 = &h00000F noch ziemlich schwarz ist. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
hunggar
Anmeldungsdatum: 04.08.2008 Beiträge: 32 Wohnort: Karlsruhe
|
Verfasst am: 08.09.2008, 17:02 Titel: |
|
|
Ok, danke, hab verstanden.
Wenn ich schreibe
anstatt
dann werden die Textfarben wunderbar wiedergegeben.
Allerdings werden jetzt die Grafiken nicht mehr angezeigt.
Nur noch schwarzer Bildschirm.
Geklappt hat das bisher mit folgendem Code:
Code: | SCREEN 19,32,,1
.
.
.
DIM x AS INTEGER
DIM y AS INTEGER
DIM AS STRING Bildname = "Stadtplan.bmp"
DIM Bild AS ANY PTR
Bild = IMAGECREATE(579,458)
BLOAD Bildname, Bild
PUT (x,y), Bild
SLEEP
SCREENLOCK
CLS
SCREENUNLOCK
SLEEP
PRINT "Das war der Stadtplan."
SLEEP
COLOR 10,16
PRINT "Das war der Stadtplan."
SLEEP |
Vielleicht muss ich ja hier was verändern,
damit sowohl die Bilder als auch der Text korrekt angezeigt werden ... ?
Jedenfalls war hier die "32" noch mit dabei ... |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 08.09.2008, 17:38 Titel: |
|
|
Nur in Farbmodi mit 16bit und mehr kannst du Bilder in Truecolor-Qualität anzeigen. du musst also entweder die Bilder in 8-Bit Bilder umwandeln (wodurch selbstverständlich Farben verloren gehen, nicht empfohlen) oder einfach die COLOR-Befehle abändern, sodass dort das RGB-makro benutzt wird, um die farben zu definieren. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
hunggar
Anmeldungsdatum: 04.08.2008 Beiträge: 32 Wohnort: Karlsruhe
|
Verfasst am: 08.09.2008, 17:58 Titel: |
|
|
Ah ja, ok,
und wie geht das ?
Wie würde "COLOR 10,16" abgeändert aussehen ? |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 08.09.2008, 18:15 Titel: |
|
|
Nimm am besten ein Bildbearbeitungsprogramm, suche dir eine Farbe aus und lasse dir den RGB-Wert dazu anzeigen. Was jetzt genau Farbe 10 ist, kann ich dir nicht sagen (Farbe 16 sollte es eigentlich gar nicht geben?), aber
&hff0000 oder RGB(255, 0, 0) ist rot
&h00ff00 oder RGB(0, 255, 0) ist grün
&h0000ff oder RGB(0, 0, 255) ist blau
und die anderen Farben ergeben sich durch Mischung.
&hffffff oder RGB(255,255, 255) ist weiß, und alles auf 0 ist schwarz. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 08.09.2008, 18:23 Titel: |
|
|
Zitat: | (Farbe 16 sollte es eigentlich gar nicht geben?) |
du vergisst wohl, dass der standardmodus 8-bit ist und nicht 4-bit. 16 ist schwarz, genau wie 0 und die farbwerte ab 248. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
frebas
Anmeldungsdatum: 20.06.2008 Beiträge: 245
|
Verfasst am: 08.09.2008, 21:49 Titel: |
|
|
Wikipedia Hilft:
Zitat: | Anzahl n der Bits Anzahl der Zustände
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
11 2048
12 4096
13 8192
14 16384
15 32768
16 65.536
… …
24 16.777.216
… …
32 4.294.967.296
|
Quelle: http://de.wikipedia.org/wiki/Bit
Also: bei 4 bit gibt es 16 Farben und bei 32 bit schon über 4 Milliarden. |
|
Nach oben |
|
 |
hunggar
Anmeldungsdatum: 04.08.2008 Beiträge: 32 Wohnort: Karlsruhe
|
Verfasst am: 08.09.2008, 22:04 Titel: |
|
|
Das sind jetzt ja wirklich viele Informationen,
die mich sicherlich weiterbringen werden, ...
... wenn ich mal verstanden habe,
womit ich den Code ersetzen muss.
Sorry, aber damit kenn ich mich einfach noch nicht aus.
Deshalb wäre ich für ein praktisches Code-Beispiel dankbar.
 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 08.09.2008, 22:29 Titel: |
|
|
setzt die Vordergrundfarbe auf hellgrün und die Hintergrundfarbe auf schwarz. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
hunggar
Anmeldungsdatum: 04.08.2008 Beiträge: 32 Wohnort: Karlsruhe
|
Verfasst am: 08.09.2008, 22:54 Titel: |
|
|
Oh, super,
danke,
das ist ja einfach.
Gibt´s irgendwo eine Tabelle,
wo ich die hxxxxxx-Werte herbekommen kann ? |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 08.09.2008, 23:01 Titel: |
|
|
nemored hat Folgendes geschrieben: | Nimm am besten ein Bildbearbeitungsprogramm, suche dir eine Farbe aus und lasse dir den RGB-Wert dazu anzeigen. |
Es gibt insgesamt 2^24 Werte - da möchte ich keine Tabelle dazu verfassen.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 08.09.2008, 23:02 Titel: |
|
|
frebas hat Folgendes geschrieben: | Wikipedia Hilft: ...
Also: bei 4 bit gibt es 16 Farben und bei 32 bit schon über 4 Milliarden. | Die letzten / Ersten 8 Bit spielen hier allerdings nciht mehr in den Farbraum rein, sondern in den Alpha kanal.
Das kann man nicht mehr als farbwert ansehen, da Alpha jeden kanal (R G und B) gleichzeitig manipuliert.
sogesehen ist ein 32 Bit Farbwert nur ein 24 Bit Farbwert (8bit R, 8bit G und 8bit B) und dann nochmal 8bit Alpha.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 565 Wohnort: Jüterbog
|
Verfasst am: 08.09.2008, 23:03 Titel: |
|
|
statt der Hexadezimalwerte....
Code: | screen 19,32
color rgb(255,0,0), rgb(0,0,0)
print"rote Schrift, schwarzer Hintergrund"
color rgb(255,0,0), rgb(0,255,255)
print"rote Schrift, tuerkiser Hintergrund"
color rgb(0,0,0), rgb(255,255,255)
print"schwarze Schrift, weisser Hintergrund"
color ,rgb(127,127,127)
print "nur Hintergrundfarbe nach grau"
color rgb(0,255,0)
print "nur Vordergrundfarbe nach gruen"
sleep
end
|
Muttonhead |
|
Nach oben |
|
 |
hunggar
Anmeldungsdatum: 04.08.2008 Beiträge: 32 Wohnort: Karlsruhe
|
Verfasst am: 08.09.2008, 23:18 Titel: |
|
|
Oh, danke, das ist wirklich klasse.
Damit kann ich was anfangen,
und es hat auch schon wunderbar geklappt.
Die andere Variante funktioniert auch:
Code: | COLOR &h00ff00,&h000000 |
Vielen Dank Euch allen.
 |
|
Nach oben |
|
 |
*Andy*
Anmeldungsdatum: 15.12.2007 Beiträge: 9
|
Verfasst am: 09.09.2008, 16:22 Titel: |
|
|
Hallo,
dieses kleine Programm wandelt dir die RBGA - Werte in Hex - Werte um.
Code: |
Screen 19, 32
Dim As Integer Farbe1, Farbe2, Farbe3, Alpha
Do
Cls
Color RGB(255, 255, 255)
Locate 10, 20: Print "Programm zum Berechnen von Farbwerten in HEX"
Locate 11, 19: Print "----------------------------------------------"
Locate 25, 20: Print "Zum Beenden 4 X ENTER Druecken!!!"
Locate 16, 20: Input "RGBA - Rotanteil R: ", Farbe1
Locate 17, 20: Input "RGBA - Gruenanteil G: ", Farbe2
Locate 18, 20: Input "RGBA - Blauanteil B: ", Farbe3
Locate 19, 20: Input "RGBA - Alpha eingeben A: ", Alpha
If Alpha = 0 Then alpha = 255
If Farbe1 = 0 And Farbe2 = 0 And Farbe3 = 0 Then
Exit Do
EndIf
Locate 22, 20
Color RGBA(Farbe1, Farbe2, Farbe3, Alpha)
Print "Der Hex - Wert der Farbe RGBA(" & Farbe1 & ", " & _
Farbe2 & ", " & Farbe3 & ", " & Alpha & ") ist H&"; Hex(farbe1, 2); Hex(farbe2, 2); Hex(farbe3, 2); Hex(Alpha, 2)
GetKey
Loop
|
Hilft dir vielleicht. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.09.2008, 16:54 Titel: |
|
|
eigenltich total unnötig, weil das Makro RGB viel praktischer ist *g* _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|