|
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 |
Leader4
Anmeldungsdatum: 20.01.2005 Beiträge: 99 Wohnort: Leipzig
|
Verfasst am: 01.07.2005, 10:42 Titel: Verhältnis Spalten/Zeilen zur Auflösung gleichsetzen |
|
|
Mal ne Frage zur Bildschirmauflösung.
Kann man das Verhältnis Spalten/Zeilen zu Auflösung skallieren?
Also:
- Wenn ich Screen 18 verwende, hab ich eine Auflösung von 640x480
und 80 Spalten sowie 30 Zeilen.
- Wenn ich Screen 19 verwende, hab ich eine Auflösung von 800x600
und über 100 Spalten und etwa 35 Zeilen.
Mein Ziel ist es jetzt, dass ich auch im Screen 19 nur 80 Spalten und
30 Zeilen hab. Dann könnt ich den Benutzer entscheiden lassen, ob er
eine Auflösung von 640x480 oder 800x600 haben möchte, ohne dass
der ganze Text auf dem Bildschirm verschoben wird.
Ich habs im Screen 19 schon mit Folgendem versucht: width 80,25
Hat aber nichts gebracht.
Weiß jemand, wie man FB gleiche Zeilen-Spalten-Vertteilungen in unterschiedlichen Screens erzeugen kann? Würde mir echt helfen.
Danke. _________________ Ein richtiger Programmierer muss so richtig faul sein und sich den ganzen Tag mit der Frage beschäftigen, wie man mal wieder etwas einfacher machen kann. |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 02.07.2005, 22:55 Titel: |
|
|
WIDHT ist - soweit ich weiß - nur dazu zuständig, das Konsole-Fenster zu beeinflussen. Wenn du mit -s gui complierst, wird dieser befehl also vermutlich sogar ignoriert.
Ich kann dir leider auch nicht sagen, wie du die Zeichengröße wählst, möglich sollte es aber auf jeden fall sein, zumindest in einigen Modi. Du kannst aber nur zwischen den Zeichengrößen 8x8, 8x14 und 8x16 wählen, da andere Charmaps nicht in der GfxLib gespeichert sind.
Was du machen könntest, wäre eine eigene Font-Routine zu schreiben. Das ist nicht ganz unpraktisch, da PRINT viele Nachteile hat, z.B. dass der Hintergrund verloren geht, der Text sich nicht genau platzieren lässt, ...
Als vorlage könntest du diesen Code benutzen, der in der Datei gfxLib.txt zu finden ist (siehe freeBASIC-Verzeichnis\docs):
Code: | DECLARE SUB GfxPrint( BYREF text AS STRING, _
BYVAL x AS INTEGER, BYVAL y AS INTEGER, _
BYVAL col AS INTEGER, BYVAL buffer AS ANY PTR = 0 )
TYPE fb_FontType
h AS INTEGER
data AS UBYTE PTR
END TYPE
' Uncomment the internal gfx font you want to use
EXTERN fb_FontData ALIAS "fb_font_8x8" AS fb_FontType
'EXTERN fb_FontData ALIAS "fb_font_8x14" AS fb_FontType
'EXTERN fb_FontData ALIAS "fb_font_8x16" AS fb_FontType
SUB GfxPrint( BYREF text AS STRING, _
BYVAL x AS INTEGER, BYVAL y AS INTEGER, _
BYVAL col AS INTEGER, BYVAL buffer AS ANY PTR = 0 )
DIM row AS INTEGER, i AS INTEGER
DIM bits AS UBYTE PTR
FOR i = 1 TO LEN(text)
bits = fb_FontData.data + _
(ASC(MID$(text, i, 1)) * fb_FontData.h)
FOR row = 0 TO fb_FontData.h-1
IF (buffer) THEN
LINE buffer, (x + 7, y + row)_
-(x, y + row), col,, _
*bits SHL 8
ELSE
LINE (x + 7, y + row)-(x, y + row),_
col,, *bits SHL 8
END IF
bits += 1
NEXT row
x += 8
NEXT i
END SUB
SCREEN 13
GfxPrint "Hello world!", 112, 96, 15
SLEEP |
(wird die nächsten Tage auf http://dhost.info/siteofkaos/freeBASIC/Inhalt.html online gehen, muss nur noch ganz fertig werden.... siehe dann Den Punkt Gfx=>Tipps und Tricks=>GfxPrint) _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
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.
|
|