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:

kleinere Schriftart
Gehe zu Seite 1, 2  Weiter
 
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
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 04.04.2022, 08:46    Titel: kleinere Schriftart Antworten mit Zitat

Ich hab schon wieder eine Frage:
ich brache eine Liste in der Console in der ich je Zeile mehr anzeigen soll als es mit dem grötmöglichen Fenster und der normal eingestellten Schrift möglich ist.
Daher möchte ich für diese Ausgabe eine kleinere Schriftart verwenden.
Derzeit ist die Console auf Consolas 24 eingestellt.
ich habe auf www.freebasic-portal.de die Funktion Set_ConsoleFont gefunden mit der man mehrere Fonts und Schriftarten einstellen können soll. Nachdem diese Funktion nur einen Integer-Parameter habe ich mit Werten von 1 bis 16 versucht die Schriftart zu ändern - aber leider ohne Erfolgt. In der Beschreibung zur Funktion ist leider auch nicht angegeben wie sie zu verwenden ist.

Code:
#Include Once "windows.bi"

Function Set_ConsoleFont(typ As Integer) As Integer
  Dim As Any Ptr Kernel32
  Dim SetConsoleFont As Function(ByVal As HANDLE, ByVal As Integer) As Integer
  Kernel32 = DylibLoad("Kernel32.dll")
  If Kernel32 Then
    SetConsoleFont = DyLibSymbol(Kernel32,"SetConsoleFont")
    Function = SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),typ)
    DyLibFree Kernel32
  EndIf
End FUNCTION

DIM I AS integer
FOR I=1 TO 16
   Set_ConsoleFont(I)
   PRINT STR(I);": ","ABCDEFGabcdefg123456"
next
GETKEY


Leider hat sich mit den unterschiedlichen I-Werten gar nichts verändert.

Gibt es da eine Liste mit Zahlen für die Schriftarten?
_________________
Grüße
kilix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 04.04.2022, 09:10    Titel: Antworten mit Zitat

ich habe da noch etwas gefunden. Hier wird auf ein Grafikfenster umgeschaltet. Die Schrift ist schön klein aber ich verstehe nicht warum sie rot ist.
Code:
Function set_fbfont (ByVal x As Integer) As Integer
  Dim As Integer breit, hoch
  ScreenInfo breit, hoch
  Select Case x
    Case 8, 14, 16          'nur 8, 14 oder 16 funktioniert richtig
      Width breit\8, hoch\x ' hier wird auto. Cls ausgeführt
    Case Else
      Return 0        'etwas lief schief
  End Select
  Return 1            'Font erfolgreich gesetzt
End Function

Screen 20, 32
set_fbfont(14)

Print "Mein FBFont_14"
Draw String (20*8, 15*14),"Schrifttyp 8x14 Font (Draw String)",&Hff0000

sleep


Mir würde für meine Anwendung die erste Funktion besser gefallen - wenn ich wüsste welche Parameter der Funktion übergeben werden können.
_________________
Grüße
kilix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 04.04.2022, 13:24    Titel: Antworten mit Zitat

kilix hat Folgendes geschrieben:
...ich verstehe nicht warum sie rot ist.


Weil du das in der Zeile
Code:
Draw String (20*8, 15*14),"Schrifttyp 8x14 Font (Draw String)",&Hff0000
so angegeben hast.

Der letzte Parameter, &Hff0000, ist die Zeichenfarbe im RGB - Format: &Hff (=255) für Rot und jeweils 0 für Grün und Blau. Mit
Code:
Draw String (20*8, 15*14),"Schrifttyp 8x14 Font (Draw String)",&Hffffff
oder alternativ
Code:
Draw String (20*8, 15*14),"Schrifttyp 8x14 Font (Draw String)",RGB(255,255,255)
bekommst du eine weiße Schrift.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 04.04.2022, 13:52    Titel: Antworten mit Zitat

Danke grindstone!
Nachdem mich die Farbe und auch das Aussehen verwirrt hatte, gab mir deine Antwort den Einstieg und ich habe ich mich jetzt intensiver mit dieser Funktion auseinander gesetzt.
Habe mir den Befehl auch in der Befehlsreferenz angesehen. Mit der habe ich immer wieder Probleme weil zwar die Regeln beschrieben sind aber mir die Anwendung dazu fehlt. Damit ist das alles sehr abstrakt.
Ich verstehe die Funktion jetzt gut. Mich stört daran aber, dass ich damit für eine einfache Liste (wenn auch mit langen Zeilen) in den Grafikmodus wechseln muss. Daher wäre mir die erste oben gezeigte Funktion lieber. Allerdings steht noch die Frage im Raum was als Variable "typ" dort einzusetzen ist. Mit den Zahlen 1 bis 32 habe ich nichts erreicht.
_________________
Grüße
kilix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 05.04.2022, 14:37    Titel: Antworten mit Zitat

kilix hat Folgendes geschrieben:
Allerdings steht noch die Frage im Raum was als Variable "typ" dort einzusetzen ist.
Die zur Verfügung stehenden Fonts sind durchnummeriert, von 0 bis <Anzahl der Fonts> - 1. "typ" ist die Nummer des gewünschten Fonts.

Welche Windows - Version hast du?

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!


Zuletzt bearbeitet von grindstone am 05.04.2022, 15:08, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 05.04.2022, 14:49    Titel: Antworten mit Zitat

ich habe Windows 10, aktuelle Version.
ich verstehe die Durchnummerierung der Fonts nicht. Ich habe der Reihe nach dir Werte von 1 bis 256 eingesetzt aber das hat an der Schrift nicht verändert
_________________
Grüße
kilix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 05.04.2022, 15:15    Titel: Antworten mit Zitat

Du kannst den Font übrigens auch direkt beim geöffneten Konsolenfenster ändern: Rechtsklick auf die Titelleiste > Eigenschaften > Schriftart

Volta hat hier drei Beispielprogramme zu diesem Thema vorgestellt, die du dir ansehen solltest (und die auch funktionieren, zumindest bei mir).

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
hhr



Anmeldungsdatum: 15.07.2020
Beiträge: 84

BeitragVerfasst am: 05.04.2022, 15:15    Titel: Antworten mit Zitat

Im ersten Programm muss Getkey in der For-Schleife stehen. Sonst rast die Schleife einfach durch.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 05.04.2022, 15:28    Titel: Antworten mit Zitat

hatte in meiner Verion am PC ein SLEEP 600 eingebaut und jetzt zusätzlich mit GETKEY gebremst aber dadurch hat sich die Schrift nicht verändert.
_________________
Grüße
kilix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 05.04.2022, 15:33    Titel: Antworten mit Zitat

Tut sie nicht, weil sie von
Code:
Sleep 2000,1
gebremst wird. Man könnte für mehr Muße beim Betrachten allerdings den Wert erhöhen.

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
hhr



Anmeldungsdatum: 15.07.2020
Beiträge: 84

BeitragVerfasst am: 05.04.2022, 15:36    Titel: Antworten mit Zitat

Code:
#Include Once "windows.bi"

Function Set_ConsoleFont(typ As Integer) As Integer
   Dim As Any Ptr Kernel32
   Dim SetConsoleFont As Function(Byval As HANDLE, Byval As Integer) As Integer
   Kernel32 = Dylibload("Kernel32.dll")
   If Kernel32 Then
      SetConsoleFont = Dylibsymbol(Kernel32,"SetConsoleFont")
      Function = SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),typ)
      Dylibfree Kernel32
   End If
End Function

Dim I As Integer
For I=1 To 16
   Set_ConsoleFont(I)
   Print Str(I);": ","ABCDEFGabcdefg123456",Wstr("Taste drücken...")
   Getkey
Next
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 05.04.2022, 15:45    Titel: Antworten mit Zitat

genau so hatte ich es aber an der Schrift hat sich nichts verändert, egal wie groß I ist.
Wenn das bei dir funktioniert dann hat bei mir wohl einen anderen Grund weshalb es nicht richtig läuft. Vermutlich wäre irgendwo eine Einstellung zu ändern ......
_________________
Grüße
kilix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hhr



Anmeldungsdatum: 15.07.2020
Beiträge: 84

BeitragVerfasst am: 05.04.2022, 16:10    Titel: Antworten mit Zitat

Bei Windows 7 und Windows XP funktioniert es nach der Korrektur.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 05.04.2022, 17:27    Titel: Antworten mit Zitat

wahrscheinlich liegt es daran, dass ich Windows10 habe.
Leider habe ich mir nicht notiert wo ich diese Funktion gefunden habe.
Die zweite Funktion (oben) stellt aber auf eine Grafik-Konsole um und das passt mir nicht in das textbasierte Projekt.
Wenn es da keine Möglichkeit gibt die Schrift in der Konsole zu ändern überlege ich von Anfang an eine etwas kleinere Schrift zu verwenden.
_________________
Grüße
kilix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hhr



Anmeldungsdatum: 15.07.2020
Beiträge: 84

BeitragVerfasst am: 05.04.2022, 18:30    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Du kannst den Font übrigens auch direkt beim geöffneten Konsolenfenster ändern: Rechtsklick auf die Titelleiste > Eigenschaften > Schriftart

Volta hat hier drei Beispielprogramme zu diesem Thema vorgestellt, die du dir ansehen solltest (und die auch funktionieren, zumindest bei mir).

Gruß
grindstone


grindstone hat einen Link angegeben: Volta hat hier...

Bei mir funktionieren nur die ersten beiden Beispiele ohne Überarbeitung.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 05.04.2022, 19:28    Titel: Antworten mit Zitat

Das tut mir Leid, diesen Link habe ich überlesen.

Allerdings ist die ersste Funktion exakt die über die wir diskutiert hatten. Die anderen muss ich testen. Ich werde zwar wahrscheinlich die Schrift generell in der Konsole einstellen aber sie ändern zu können wenn es nötig ist wäre schön.
_________________
Grüße
kilix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
kilix



Anmeldungsdatum: 05.02.2022
Beiträge: 175

BeitragVerfasst am: 05.04.2022, 20:13    Titel: Antworten mit Zitat

Habe mir die 3 Programme angesehen:
1. Programm:
die Funktion "Set_ConsoleFont" ist die über die wir diskutiert hatten, jetzt aber ergänzt durch die Funktion "NumberOfFonts" und einem Programm mit den doe Konsolengröße und Farbe eingestellt wird und das in der ersten Schleife viele Zeichen ausgibt. Das verstehe ich.
Die zweite For-Schleife verstehe ich nicht denn der Printbefehl wurde nicht ausgeführt.
Der gedruckte Font ist zwar kleiner als der in der Konsole eingestellte aber ich kann (mit meinen noch bescheidenen Kenntnissen) nicht erkennen wo/wie ich angeben kann welche Größe der Font haben soll bzw. wo die ausgegebene Zeichengröße definiert wurde - oder geschieht das nur durch die Fenstergröße? Das kann aber nicht sein weil ich diese doppelt so groß machte und sich die Schrift nicht veränderte.
2. Programm:
neuere Form des ersten, macht auch das gleiche. Dieses Programm holt die beiden deklarierten Funktionen offenbar aus windows.bi. Was das Programm selbst betrifft s.o.
3. Programm:
habe es kopiert, kann es aber wegen Fehlern nicht kompilieren. Ich erhalte für Type und Funktionen die Meldung "Duplicate definition" und dann noch Folgefehler. Leider kann ich nicht feststellen warum das so ist oder hängst das mit windows.bi zusammen?

Alles in allem kann ich mit diesen Funktionen/Programmen meinen Wunsch nach einstellbarer Fontgröße bzw. Fonts nicht erfüllen (oder ich verstehe einfach nicht wie das geht).
_________________
Grüße
kilix
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
hhr



Anmeldungsdatum: 15.07.2020
Beiträge: 84

BeitragVerfasst am: 05.04.2022, 23:09    Titel: Antworten mit Zitat

Keine Sorge, ich verstehe es auch nicht. Ich wünsche mir auch, dass man alle Einstellungen, die man in der Konsole vornehmen kann, auch im Programm vornehmen könnte.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1208
Wohnort: Ruhrpott

BeitragVerfasst am: 06.04.2022, 11:27    Titel: Antworten mit Zitat

"Duplicate definition" wird ausgeworfen, wenn die DIMensionierte Variable schon vorher im Programm definiert wurde (z.B. in einer der #INCLUDE - Dateien). Meistens hilft es, die betreffende(n) Zeile(n) im eigenen Programm auszukommentieren und es erneut zu versuchen.

Zu Windows 10: Möglicherweise benötigt man zum Ändern der Konsolenschrift Administratorrechte. Windows wird ja von Version zu Version immer restriktiver.

Probier mal das hier:
Code:
#Include "windows.bi"

Dim As Any Ptr Kernel32 = DylibLoad("Kernel32.dll")

Dim SetConsoleFont As Function (hConsoleOutput As HANDLE, index As ULong) As Boolean
If Kernel32 Then
  SetConsoleFont = DylibSymbol( Kernel32, "SetConsoleFont" )
Else
  End
EndIf

SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),0)
? "Hallo Welt"

Sleep


Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
hhr



Anmeldungsdatum: 15.07.2020
Beiträge: 84

BeitragVerfasst am: 06.04.2022, 15:42    Titel: Antworten mit Zitat

Ich habe auch noch einen Vorschlag, der bei Windows 7 funktioniert.

Für breite und hoehe kann man die Zahlen einsetzen, die im Konsolenmenü wählbar sind.
Bei Consolas und Lucida Console wird nur eine Zahl, die Höhe, angegeben.
Code:
#include "windows.bi"

SetWindowPos(GetConsoleWindow, HWND_TOP, 20, 20, 500, 300, 0)

Sub changefontsize(w As Long, h As Long, ftype As String = "")
   Dim As _CONSOLE_FONT_INFOEX info
   With info
      .cbSize = Sizeof(info)
      .dwFontSize.X = w
      .dwFontSize.Y = h
      .FaceName = ftype
   End With
   SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), NULL, @info)
End Sub

Dim As Long breite, hoehe

breite = 12
hoehe = 16
changefontsize(breite, hoehe)
Print "Rasterschriftart", WStr("Taste drücken...")

Getkey
Cls

breite = 0
hoehe = 36
changefontsize(breite, hoehe, "Consolas")
Print "Consolas", WStr("Taste drücken...")

Getkey
Cls

breite = 0
hoehe = 28
changefontsize(breite, hoehe, "Lucida Console")
Print "Lucida Console", WStr("Taste drücken...")

Sleep

https://www.freebasic.net/forum/viewtopic.php?p=291160#p291160
http://www.cplusplus.com/forum/general/118967/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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