 |
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 |
UdoMM
Anmeldungsdatum: 22.08.2007 Beiträge: 17 Wohnort: Ba-Wü
|
Verfasst am: 25.08.2007, 01:14 Titel: Textfarbe im Grafikfenster steuern |
|
|
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 25.08.2007, 01:18 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 25.08.2007, 01:36 Titel: |
|
|
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 25.08.2007, 01:37 Titel: |
|
|
komisch das mir sowas nie auffaellt  _________________
 |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 25.08.2007, 14:58 Titel: |
|
|
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 |
|
 |
UdoMM
Anmeldungsdatum: 22.08.2007 Beiträge: 17 Wohnort: Ba-Wü
|
Verfasst am: 25.08.2007, 15:02 Titel: |
|
|
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 |
|
 |
UdoMM
Anmeldungsdatum: 22.08.2007 Beiträge: 17 Wohnort: Ba-Wü
|
Verfasst am: 26.08.2007, 21:57 Titel: |
|
|
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 26.08.2007, 22:02 Titel: |
|
|
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 |
|
 |
csde_rats

Anmeldungsdatum: 07.01.2007 Beiträge: 2292 Wohnort: Zwischen Sessel und Tastatur
|
Verfasst am: 26.08.2007, 22:04 Titel: |
|
|
Ö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 |
|
 |
UdoMM
Anmeldungsdatum: 22.08.2007 Beiträge: 17 Wohnort: Ba-Wü
|
Verfasst am: 26.08.2007, 22:12 Titel: |
|
|
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 und stattdessen jede Menge Formalismen brauche, die mir weder an Pascal noch an VB jemals Freude bereitet hatten - das ist wirklich ein Schock! Ob ich das jemals noch anders lernen werde ?
Als ich dann entdeckte, dass ich ja glücklicherweise mit -lang qb kompilieren kann , dachte ich, dass dann meine Probleme wohl auch ins QB-Forum gehören würden - war das wirklich falsch? _________________ <><
:
UdoMM |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 26.08.2007, 22:18 Titel: |
|
|
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
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 |
|
 |
UdoMM
Anmeldungsdatum: 22.08.2007 Beiträge: 17 Wohnort: Ba-Wü
|
Verfasst am: 26.08.2007, 22:22 Titel: |
|
|
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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 26.08.2007, 22:26 Titel: |
|
|
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 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  _________________
 |
|
Nach oben |
|
 |
UdoMM
Anmeldungsdatum: 22.08.2007 Beiträge: 17 Wohnort: Ba-Wü
|
Verfasst am: 26.08.2007, 22:30 Titel: |
|
|
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 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 |
|
 |
UdoMM
Anmeldungsdatum: 22.08.2007 Beiträge: 17 Wohnort: Ba-Wü
|
Verfasst am: 26.08.2007, 22:37 Titel: |
|
|
Eternal_pain hat Folgendes geschrieben: |
Alternativ kann man auch in Hex schreiben was mir persoenlich besser gefaellt |
...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 |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 26.08.2007, 22:46 Titel: |
|
|
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 |
|
 |
UdoMM
Anmeldungsdatum: 22.08.2007 Beiträge: 17 Wohnort: Ba-Wü
|
Verfasst am: 26.08.2007, 22:50 Titel: |
|
|
... 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 |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 26.08.2007, 22:53 Titel: |
|
|
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 |
|
 |
UdoMM
Anmeldungsdatum: 22.08.2007 Beiträge: 17 Wohnort: Ba-Wü
|
Verfasst am: 28.08.2007, 10:30 Titel: |
|
|
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... )
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 |
|
 |
|
|
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.
|
|