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:

Textfarbe im Grafikfenster steuern

 
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
UdoMM



Anmeldungsdatum: 22.08.2007
Beiträge: 17
Wohnort: Ba-Wü

BeitragVerfasst am: 25.08.2007, 01:14    Titel: Textfarbe im Grafikfenster steuern Antworten mit Zitat

Ich habe nun schon so einiges hier nachgelesen aber richtig durchgestiegen bin ich leider noch nicht, deshalb folgendes:

Ich möchte im Grafikfenster meine Textfarbe steuern. Zum Test benutze ich das hier:

Code:
ScreenRes 640, 480, 32
PALETTE 15, &h00003F
print "Hallo"
for i=0 to 15
    color i
    print "Hallo";i
next
draw string (0,0),"Hallo_DS"
sleep
end


Sobald die 'color'-Anweisung vorkommt, bleibt mein Grafikfenster imer schwarz. Wenn ich 'color' auskommentiere, sehe ich meine Hallos (natürlich alle gleich weiß).

Die 'PALETTE'-Anweisung steht da nur aus Verzweiflung, vielleicht hilft sie ja später mal irgendwie...

Wie macht man sowas denn richtig?
_________________
<><
:
UdoMM
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 25.08.2007, 01:18    Titel: Antworten mit Zitat

Du arbeitest da mit 32bit Farbtiefe da gibt es sowas wie Palette gar nicht... alternativ kannst Du beim Standard System Font auch

Code:
draw string (100,100),"test",FARBE


Angeben, oder Du gehst auf 8bit Farbtiefe runter da kannst Du dann wieder mit Palette arbeiten...
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Jojo
alter Rang


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

BeitragVerfasst am: 25.08.2007, 01:36    Titel: Antworten mit Zitat

ach ja, übrigens falsches forum. bitte beim nächsten mal lesen wo du hin postest...
@admins: bitte verschieben.
_________________
» 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
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 25.08.2007, 01:37    Titel: Antworten mit Zitat

komisch das mir sowas nie auffaellt vor lachen auf dem Boden rollen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 25.08.2007, 14:58    Titel: Antworten mit Zitat

probiere es mal so:
Code:
Dim As Integer i
Screen 18, 8

Print "Hallo"
For i=0 To 15
  Color i
  Print "Hallo";i
Next
Draw String (100,0),"Hallo_DS",15
Sleep

Ich schätze der Fehler hier ( http://forum.qbasic.at/viewtopic.php?p=64973#64973 ) hat sich damit auch erledigt.
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
UdoMM



Anmeldungsdatum: 22.08.2007
Beiträge: 17
Wohnort: Ba-Wü

BeitragVerfasst am: 25.08.2007, 15:02    Titel: Antworten mit Zitat

Jaaaaa! Das sieht gleich ganz anders aus!

Vielen Dank, jetzt werde ich bei nächster Gelegenheit mal sehen, wie sich das im größeren Kontext macht.

Es grüßt

UdoMM
:
<><
_________________
<><
:
UdoMM
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
UdoMM



Anmeldungsdatum: 22.08.2007
Beiträge: 17
Wohnort: Ba-Wü

BeitragVerfasst am: 26.08.2007, 21:57    Titel: Antworten mit Zitat

Inzwischen habe ich das dann mal in meinem kleinen Mathetrainerprogramm sinngemäß ausprobiert, allerdings habe ich da den ScreenRes-Befehl stehen:

Code:
ScreenRes breit, hoch, 8


brachte gar keine Grafik mehr, nur ein komplett schwarzes Fenster.

Code:
ScreenRes breit, hoch, 16


war da schon besser, jetzt gab es wieder Grafik, aber die Anzeige hat sich nur dann aktualisiert, wenn ich das Fenster minimiert und wieder hergestellt habe. Es schien mir, als ob es nötig wäre, eine Art Refresh zu machen. Laut Hilfe gibt's da den Parameter "RefreshRate", keine Ahnung, welche Werte der erwartet, ich habe einfach mal folgendes gemacht:

Code:
ScreenRes breit, hoch, 32,,,1


und hatte plötzlich eine Vollbilddarstellung (was mir sowieso lieber ist) und auch die Anzeige war nun fehlerfrei.

ABER: nach dem Beenden der .exe war mein Mauszeiger eingefroren und ich konnte mein Win98 per Tastatursteuerung runterfahren (sonderbare Nebenwirkung, auch nicht ganz so praktisch, finde ich...)

Eben habe ich auch das wegbekommen, indem ich beim Kompilieren das "-s gui" weglasse, bei Vollbild ist es mir schließlich egal, ob es noch das Textfenster dahinter gibt.

Und: Voilà - jetzt geht das Ganze wie gewünscht. Allerdings ohne Farbsteuerung für meinen Text (die hätte ich ja nur mit 8 Bit Farbtiefe) aber darauf werde ich dann wohl einfach pfeifen...

Wäre es vielleicht eine gute Idee, wenn ich irgendwie die aktuell eingestellte Farbtiefe der Grafikkarte ermitteln würde und dementsprechend die Parameter 8, 16 oder 32 benutzte? Mein Win98-Rechner hat nämlich kürzlich von mir gesagt bekommen, dass er gefälligst nur noch HighColor zeigen soll, damit kann er im Gegenzug eine höhere Auflösung anzeigen. HighColor dürfte 16 Bit Farbtiefe entsprechen, richtig?
_________________
<><
:
UdoMM
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 26.08.2007, 22:02    Titel: Antworten mit Zitat

Also das die Bilder nicht angezeigt werden kann ich mir dadurch erklaeren das diese vermutlich in 24/32 bit gespeichert wurden von daher auch in FB nur in diesem Modus wieder zu laden sind... anders ist es wenn man diese mit einem Grafik programm auf ein Index Color bsp 256 Farben (8bit) speichert, so kann man dieses ab 8bit problemlos laden auch in hoeheren Grafikscreens...

Das mit der Maus kann ich mir leider nicht erklaeren...

Was das ermitteln der Aufloesung ect angeht, hilft Dir vermutlich der Befehl ScreenInfo eine genauere Bescheibung des Befehls findest Du in der Befehlsreferenz, solltest Du keine oder keine aktuelle haben findest Du diese auch unter http://www.freebasic-portal.de
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
csde_rats



Anmeldungsdatum: 07.01.2007
Beiträge: 2292
Wohnort: Zwischen Sessel und Tastatur

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

Öhm.
Wozu gibts das Makro RGB(R,G,B) in der fbgfx.bi?
Wie Eternal_Pain gesagt hat:
Code:
draw string (100,100),"test",FARBE

z.B. wäre dann ein rotes "test":
Code:
draw string (100,100),"test",rgb(255,0,0)

ein blaues "test":
Code:
draw string (100,100),"test",rgb(0,0,255)

ein grünes "test":
Code:
draw string (100,100),"test",rgb(0,255,0)


Das ganze läuft nat. nur mit 16/32 Bit Farbtiefe.
_________________
If hilfreicher_Beitrag then klick(location.here)

Klick
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
UdoMM



Anmeldungsdatum: 22.08.2007
Beiträge: 17
Wohnort: Ba-Wü

BeitragVerfasst am: 26.08.2007, 22:12    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
ach ja, übrigens falsches forum. bitte beim nächsten mal lesen wo du hin postest...
@admins: bitte verschieben.


Sorry, ich dachte ich wäre im QB-Forum richtiger damit, weil ich mich erstmal von dem Schock erholen muss, dass ich als ehemalig begeisterter COMMODORE BASIC V3.5 - Programmierer (ist das schon wieder lange her...) jetzt mit FB0.18 auf einmal meine geliebten Suffixe und GOSUBs nicht mehr verwenden darf geschockt und stattdessen jede Menge Formalismen brauche, die mir weder an Pascal noch an VB jemals Freude bereitet hatten weinen - das ist wirklich ein Schock! Ob ich das jemals noch anders lernen werde verwundert ?

Als ich dann entdeckte, dass ich ja glücklicherweise mit -lang qb kompilieren kann mit den Augen rollen , dachte ich, dass dann meine Probleme wohl auch ins QB-Forum gehören würden verlegen- war das wirklich falsch?
_________________
<><
:
UdoMM
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: 26.08.2007, 22:18    Titel: Antworten mit Zitat

also in VB kannst du auch im "QB-Style" oder im "FB-Style" schreiben. Da das Problem ja eindeutig sich um den FreeBasic-Code (SCREENRES gibt's nicht im qbasic) dreht, befürworte ich den FB-bereich - Die ganzen probleme, um die es dir eigentlich geht, gibt's nämlich in QB nicht grinsen
Das mit dem Aktualisieren... könnte das nicht auch an alter hardware / treiber liegen?
_________________
» 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
UdoMM



Anmeldungsdatum: 22.08.2007
Beiträge: 17
Wohnort: Ba-Wü

BeitragVerfasst am: 26.08.2007, 22:22    Titel: Antworten mit Zitat

csderats hat Folgendes geschrieben:
Öhm.
Wozu gibts das Makro RGB(R,G,B) in der fbgfx.bi?
Wie Eternal_Pain gesagt hat:
Code:
draw string (100,100),"test",FARBE

z.B. wäre dann ein rotes "test":
Code:
draw string (100,100),"test",rgb(255,0,0)



Ja, das ist ein sehr guter Hinweis, nur bin ich bis auf weiteres jetzt erstmal ein bisschen faul und habe die Eingabe per "Input" gemacht (stimmt, das ist wirklich total unelegant!).

Da ich inzwischen entdeckt habe, dass ich erstmal einen neuen Programmierstil lernen müssen werde und dann mein bisheriges Geschreibsel umkrempeln muss, bevor ich all die schönen Sachen machen kann, die ich mir eigentlich so vorgestellt hatte, bin ich im Augenblick ganz froh, dass ich es bisher noch nicht komplizierter gemacht habe (eigentlch sollte ja das erste, was man macht, ja eine vernünftige Eingaberoutine sein - naja, immerhin finde ich auf diese Weise ein bisschen heraus, was geht und was nicht geht).

Ich habe aber auch eine ganze Menge Draw Strings im Skript, mit denen könnte ich es mal versuchen, ich fürchte nur, dass sich der empfohlene Makro auch wieder mal mit der -lang qb-Option beißt - oder vielleicht doch nicht?
_________________
<><
:
UdoMM
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 26.08.2007, 22:26    Titel: Antworten mit Zitat

UdoMM hat Folgendes geschrieben:
Ich habe aber auch eine ganze Menge Draw Strings im Skript, mit denen könnte ich es mal versuchen, ich fürchte nur, dass sich der empfohlene Makro auch wieder mal mit der -lang qb-Option beißt - oder vielleicht doch nicht?


Alternativ kann man auch in Hex schreiben was mir persoenlich besser gefaellt zwinkern zb. &hAARRGGBB weobei das Alpha erst einmal nicht so wichtig ist, solange Du das Alpha Flag nicht nutzt (bisher steht dazu auch noch nichts in der aktuellen FPB Referenz, wird aber nachgeholt) dann ware es immernoch &hRRGGBB wobei RR=Rot in Hex von 00-FF und halt GG=Gruen und BB=Blau ist lächeln
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
UdoMM



Anmeldungsdatum: 22.08.2007
Beiträge: 17
Wohnort: Ba-Wü

BeitragVerfasst am: 26.08.2007, 22:30    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:

Das mit dem Aktualisieren... könnte das nicht auch an alter hardware / treiber liegen?


Ja, das könnte gut sein. Der Rechner ist gerade mal 10 Jahre geworden cool aber für die Kinder und als Schreibmaschine und Scanplatz tut er's eben ganz gut.
Habe gerade letzte Woche den Original-Treiber von ELSA installiert (entgegen der Win98-Empfehlung S3 Trio64...), weil der mir die Möglichkeit gibt, höhere Auflösungen bei niedrigerer Farbtiefe anzuzeigen - die 800x600 haben mich einfach total angenervt!

Mein XP-Notebook macht ja auch nicht diese Mucken.

Fazit: erstmal vielen Dank für Eure Unterstützung!

Gruß
_________________
<><
:
UdoMM
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
UdoMM



Anmeldungsdatum: 22.08.2007
Beiträge: 17
Wohnort: Ba-Wü

BeitragVerfasst am: 26.08.2007, 22:37    Titel: Antworten mit Zitat

Eternal_pain hat Folgendes geschrieben:


Alternativ kann man auch in Hex schreiben was mir persoenlich besser gefaellt zwinkern


...mir auch!

Also, ein
Code:
Draw String (XStart+0,YStart+0),"W„hle den Zahlenbereich aus:",RGB(255,0,0)

funktioniert entgegen meinen Befürchtungen supergut!

Jetzt habe ich noch einen Argument count mismatch mit:
Code:
Draw String (XStart+0,YStart+0),"W„hle den Zahlenbereich aus:",RGB(&h00FF0000)

- wie will er das denn gern geschrieben bekommen?
_________________
<><
:
UdoMM
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 26.08.2007, 22:46    Titel: Antworten mit Zitat

RGB(255, 0, 0) macht aus den drei Farbanteilen einen Wert..
diesen einen Wert kannst du auch so übergeben: &hAARRGGBB
Im Klartext:
Code:
Draw String (XStart, YStart), "W„hle den Zahlenbereich aus:", &h00FF0000
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
UdoMM



Anmeldungsdatum: 22.08.2007
Beiträge: 17
Wohnort: Ba-Wü

BeitragVerfasst am: 26.08.2007, 22:50    Titel: Antworten mit Zitat

... oder dann auch gleich so:

Code:
HF=&h00FFFF00
Draw String (XStart+0,YStart+2*LineY),"1 Zahlen bis"+str$(zMaxArr(1)),HF


Ja, das ist wirklich eine prima Sache!

Vielen Dank für die Info.
_________________
<><
:
UdoMM
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 26.08.2007, 22:53    Titel: Antworten mit Zitat

zu beachten waere da aber noch das Alpha, nur als moegliche Vorwarnung bei aenderungen in spaeteren Versionen...
denn bei 'aktivierten' Alpha Flag im Screenmode wuerde &h00FF0000 oder aehliches wo &h00RRGGBB angegeben wird nicht angezeigt, da das Alphaflag auf null steht und somit bedeutet 100% Transparent = Nicht sichtbar
Wenn man also das Alpha mit angibbt schonmal zur vorbereitung (als sicherheit) als &hFF ;o)
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
UdoMM



Anmeldungsdatum: 22.08.2007
Beiträge: 17
Wohnort: Ba-Wü

BeitragVerfasst am: 28.08.2007, 10:30    Titel: Antworten mit Zitat

Eternal_pain hat Folgendes geschrieben:

Das mit der Maus kann ich mir leider nicht erklaeren...


Es ist wieder aufgetreten und ich habe mal genau hingesehen und festgestellt, dass mein Kommando
Code:
ScreenRes breit, hoch, GfxDepth,,1

nicht den Refresh beeindruckt, sondern auf Vollbild umschaltet.
(wer Kommas zählen kann... zwinkern )

Und wenn mein Programm aus dem Vollbildmodus heraus beendet wird, dann kommen unter irgendwelchen Umständen Speicherzugriffsverletzungen vor (wenn das PRG aus dem FBIDE heraus läuft) oder eben eingefrorene Mauszeiger (wenn die EXE beendet ist).

Als Abhilfe ist mir eingefallen, dass ich vor dem Ende noch den Vollbildmodus auf Fenstermodus zurücksetze:

Code:
ScreenRes breit, hoch, GfxDepth,,0
End


Das hilft (bisher).

Gruß
_________________
<><
:
UdoMM
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