Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Grafikproblem: farbiger Text wird nicht immer umgesetzt

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
hunggar



Anmeldungsdatum: 04.08.2008
Beiträge: 32
Wohnort: Karlsruhe

BeitragVerfasst am: 08.09.2008, 11:23    Titel: Grafikproblem: farbiger Text wird nicht immer umgesetzt Antworten mit Zitat

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:
Code:
Color 10,16


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 ?
Code:
SCREEN 19,32,,1

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.
lächeln
HungGar
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 08.09.2008, 14:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
hunggar



Anmeldungsdatum: 04.08.2008
Beiträge: 32
Wohnort: Karlsruhe

BeitragVerfasst am: 08.09.2008, 17:02    Titel: Antworten mit Zitat

Ok, danke, hab verstanden.
Wenn ich schreibe
Code:
SCREEN 19,,,1

anstatt
Code:
SCREEN 19,32,,1

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 08.09.2008, 17:38    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
hunggar



Anmeldungsdatum: 04.08.2008
Beiträge: 32
Wohnort: Karlsruhe

BeitragVerfasst am: 08.09.2008, 17:58    Titel: Antworten mit Zitat

Ah ja, ok,
und wie geht das ?

Wie würde "COLOR 10,16" abgeändert aussehen ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 08.09.2008, 18:15    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 08.09.2008, 18:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
frebas



Anmeldungsdatum: 20.06.2008
Beiträge: 245

BeitragVerfasst am: 08.09.2008, 21:49    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
hunggar



Anmeldungsdatum: 04.08.2008
Beiträge: 32
Wohnort: Karlsruhe

BeitragVerfasst am: 08.09.2008, 22:04    Titel: Antworten mit Zitat

Das sind jetzt ja wirklich viele Informationen,
die mich sicherlich weiterbringen werden, ...
... wenn ich mal verstanden habe,
womit ich den Code
Code:
COLOR 10,16
ersetzen muss.

Sorry, aber damit kenn ich mich einfach noch nicht aus.
verlegen

Deshalb wäre ich für ein praktisches Code-Beispiel dankbar.

lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 08.09.2008, 22:29    Titel: Antworten mit Zitat

Code:
COLOR &h7FFF7F, 0

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
Benutzer-Profile anzeigen Private Nachricht senden
hunggar



Anmeldungsdatum: 04.08.2008
Beiträge: 32
Wohnort: Karlsruhe

BeitragVerfasst am: 08.09.2008, 22:54    Titel: Antworten mit Zitat

Oh, super,
danke,
das ist ja einfach.

Gibt´s irgendwo eine Tabelle,
wo ich die hxxxxxx-Werte herbekommen kann ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 08.09.2008, 23:01    Titel: Antworten mit Zitat

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. zwinkern
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 08.09.2008, 23:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 565
Wohnort: Jüterbog

BeitragVerfasst am: 08.09.2008, 23:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
hunggar



Anmeldungsdatum: 04.08.2008
Beiträge: 32
Wohnort: Karlsruhe

BeitragVerfasst am: 08.09.2008, 23:18    Titel: Antworten mit Zitat

Oh, danke, das ist wirklich klasse.
Damit kann ich was anfangen,
und es hat auch schon wunderbar geklappt.

lächeln

Die andere Variante funktioniert auch:
Code:
COLOR &h00ff00,&h000000



Vielen Dank Euch allen.
grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
*Andy*



Anmeldungsdatum: 15.12.2007
Beiträge: 9

BeitragVerfasst am: 09.09.2008, 16:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.09.2008, 16:54    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz