OS2.org Site Index - Feedback - Impressum
Sprachauswahl / Choose your Language News Software Hardware Projekte Forum Tipps Links Verschiedenes
Editorial Diskussion HelpDesk Umfrage
[Forum]
in nach (Erweiterte Suche)
[Forum]
( Archiv ) ( Neues Thema )

( Zeige die Threadübersicht ) ( Zur Startübersicht )
11.08.2006
Größere Symbole in C/C++ im Textmodus (von: Hermann Mahr, 08:56:46) ^
Guten Tag C/C++-Experten,

ich wüßte gerne, ob es in C/C++ möglich ist, im Textmodus einzelne Symbole, wie Ziffern oder Buchstaben, größer als den umgebenden Text auf dem Bildschirm erscheinen zu lassen und auch auszudrucken. Da ich nur aus Interesse gelegentliche Programmierversuche unternehme, bitte ich um Nachsicht für diese Frage, die ein erfahrener (C/C++)-Programmierer wohl vornehm belächeln wird.

Sollte diese Frage in dieses Forum nicht hineinpassen, was ich vermute, so bitte ich um Benennung geeigneter Foren und deren URL's.

Für diesbezügliche Antworten meinen Dank schon an dieser Stelle.

Mit freundlichen Grüßen,
Hermann Mahr.

[ Leser: 78 ]

12.08.2006
Re: Größere Symbole in C/C++ im Textmodus (von: Schmackes, 07:11:06)
Hallo Hermann,

meines Wissens nach ist das im Textmodus nicht drin. Dafür muß man wohl den Grafikmodus bemühen.

Gruß
Axel

Re: Größere Symbole in C/C++ im Textmodus (von: Hermann Mahr, 08:55:44)
Diese Vermutung habe ich auch, es gibt ja in im GNU-GCC die Datei "graph.h"; etliche Funktionen von GNU-GCC benötigen ja auch "graph.h". Nur weiß ich nicht, welche Funktionen man für mein Begehren braucht. Ich habe einige meiner Bücher über C und C++ dazu durchgewälzt, aber nichts dazu gefunden.

Dennoch danke für die Antwort.

MfG,
Hermann Mahr.

Re: Größere Symbole in C/C++ im Textmodus (von: Christoph, 13:05:51)
Muss es denn unbedingt grösser sein? Geht auch eine andere Farbe? Das sollte möglicherweise über ECS-Sequenzen (in einem ANSI-Terminal, z.B. CMD.EXE) gehen. (Wie es dann mit Drucken funktioniert, weis ich leider nicht.)

Re: Größere Symbole in C/C++ im Textmodus (von: Hermann Mahr, 13:58:53)
Geht leider auch nicht, da ich keinen Farbdrucker habe und auch künftig wohl keinen haben werden.

Aber danke für die Zuschrift.

MfG,
Hermann Mahr

Re: Größere Symbole in C/C++ im Textmodus (18:14:23)
Hallo Hermann
Für den Ausdruck ist ein Blick ins Druckerhandbuch oft sehr hilfreich. Dort könnte was über doppelt hoch und oder doppelt bereit mithilfe von Steuerzeichen stehen. zb ESC"xy"
mfg Egon

14.08.2006
Re: Größere Symbole in C/C++ im Textmodus (von: Andi B., 12:45:11)
Größere Schriften sollten mit Watcom gehen. Da kann man glaube ich im Grafikmode auch andere Fonts laden. Die größe kann man da konfigurieren. Ist aber schon 'ne Ewigkeit her und bin mir da nicht mehr ganz sicher. Und ob ich das Programm noch finde...

Also suche mal in der Watcom Hilfe. Aber wie gesagt, ist dann aber ein Graphicmode. Sollte aber ja kein Problem sein. Kannst nur nicht mehr mit printf sondern nur mehr mit outtext() schreiben.

Re: Größere Symbole in C/C++ im Textmodus (von: Hermann Mahr, 13:34:50)
Danke für den Tip!

MfG,
Hermann Mahr.

Re: Größere Symbole in C/C++ im Textmodus (von: Hermann Mahr, 13:59:37)
Ich habe mich zu früh gefreut, denn eine Funktion "outtext()"

"outtext()" und "outtextxy()" mit "graphics.h"
gibt es wahrscheinlich nur in Borlands C++ Version 3.00 vom Februar 1992.

Weder in Watcom's C/C++ noch in der neuesten Version von emx von Innotek gibte unter den Graphikfunktionen eine Funktion "outtext()". Die Header-Datei für alle dort existierenden Graphikfunktionen heißt "graph.h".

Schade, aber nochmals meinen Dank für die diesbezügliche Zuschrift.

MfG,
Hermann Mahr.

16.08.2006
Re: Größere Symbole in C/C++ im Textmodus (von: Andi B., 11:01:39)
Das unten ist jetzt aus der Watcom Hilfe. Sitze leider gerade vor einem Win Rechner, würde mich aber wundern wenn's bei OS/2 nicht vorhanden wäre. Allerdings habe ich gerade gesehen, unterstützte Systeme DOS, QNX. Sollte aber unter OS/2 funktionieren. Zumindest im fullscreen mode oder aber auch unter dosbox. Ich würde wetten, daß ich sowas auch unter dem DOS-Aufsatz W98 laufen hatte. Das Beispiel unten läuft übrigens auch im Textmode. Für den Graphicmode habe ich die EGA Karte Assemblerroutinen geschrieben um direkt auf jede Pixelposition Text zu schreiben. Soweit ich mich erinnern kann, war dann später sowas bei Watcom dabei, mit unterschiedlichen Fontgrößen. (Im Textmode gehen ja nur 2 Größen, 8x8 und 14x8 Pixel)

Synopsis:

#include <graph.h>
void _FAR _outtext( char _FAR *text );

Description:

The _outtext function displays the character string indicated by the argument text. The string must be terminated by a null character ('\0'). When a line-feed character ('\n') is encountered in the string, the characters following will be displayed on the next row of the screen.

The text is displayed using the current text color (see the _settextcolor function), starting at the current text position (see the _settextposition function). The text position is updated to follow the end of the displayed text.

The graphics library can display text in three different ways.


1. The _outtext and _outmem functions can be used in any video mode. However, this variety of text can be displayed in only one size.

2. The _grtext function displays text as a sequence of line segments, and can be drawn in different sizes, with different orientations and alignments.

3. The _outgtext function displays text in the currently selected font. Both bit-mapped and vector fonts are supported; the size and type of text depends on the fonts that are available.

Returns:

The _outtext function does not return a value.

See Also:

_settextcolor, _settextposition, _settextwindow, _grtext, _outmem, _outgtext

Example:

#include <conio.h>
#include <graph.h>

main()
{
_setvideomode( _TEXTC80 );
_settextposition( 10, 30 );
_outtext( "WATCOM Graphics" );
getch();
_setvideomode( _DEFAULTMODE );
}

Classification:

PC Graphics

Systems:

DOS, QNX

Re: Größere Symbole in C/C++ im Textmodus (von: Andi B., 12:12:10)
Die entsprechende Funktion heißt

#include <graph.h>
void _FAR _setcharsize( short height, short width );


Re: Größere Symbole in C/C++ im Textmodus (von: Hermann Mahr, 14:21:14)
Guten Tag Andy,

besten Dank für die Mühe, mir so ausführlich zu schreiben. Leider alles vergebens!

Auf meinem Rechner sind installiert der gcc-3.2.1 für OS/2 und ebenso Open-Watcom-os2-1.2.exe. In keinem dieser beiden (C/C++ )-Compiler existieren Funktionen wie:
_outtext, _setcharsize, _settextposition, _settextcolor, _settextwindow oder dergleichen mehr.

Da ich aber schon Programme im Textmodus gesehen habe, in denen Symbole unterschiedlicher Größen vorkommen, habe ich die Hoffnung noch nicht ganz aufgegeben.

Daß es solche Möglichkeiten mit den vielen Möglichkeiten der graphischen Benutzeroberfläche gibt, ist mir wohl bekannt; es müßte aber auch im Textmodus gehen.

Mit freundlichen Grüßen,
Hermann Mahr.

17.08.2006
Re: Größere Symbole in C/C++ im Textmodus (von: Andi B., 11:24:27)
So wie ich Textmode verstehe, geht sowas prinzipiell nicht. Im Textmode gibt's eine fix definierte Anzahl von characters in einer fix definierten Anzahl von Zeilen. Das waren mal 40x25, 80x25, 80x40, 80x50 (zirka). An jeder dieser Postionen kann ein Zeichen welches im Chracter ROM der Graphickate abgelegt ist, dargestellt werden. Und zwar wird er Graphikkarte der ASCII Code für die entsprechende Position mitgeteilt, z.B. 65 und die Graphikkarte malt dann die entsprechenden Punkte damit dort dann ein 'A' steht. Aus wievielen Punkten dann dieses A besteht, hängt von der Auflösung ab, z.B. war das bei EGA (640x350) 8x14 (25Zeilen) bzw. 8x8 für 43 Zeilen. Mit höheren Auflösungen (VGA) wurden dann die Zeichen aus noch mehr Pixeln dargestellt, oder man hatte halt mehr Zeilen/Spalten.

Zusammenfassung dieser langen Auführung - im reinen Textmode kann's nicht gehen, da ja die Buchstaben im Graphikkarten ROM immer gleich groß sind und auch sein müssen (solange der Mode nicht gewechselt wird z.B. von 80x25 auf 132x50).

Natürlich kann man sich Zeichen mithilfe von pseudo Graphik basteln - im Zeichensatz gibt's ja auch z.B. ein voll ausgefülltes Rechteck. Aber solche Zeichen wären dann riesig (mind. 5x so groß wie ein normales Zeichen um halbwegs lesbar zu sein) Und man müßte jedes Zeichen aus entsprechend vielen Rechtecken zusammenstellen. Aber so große Zeichen willst du ja sicher auch wieder nicht. Übrigens die Rahmensymbole (doppelte Linien) gibt's auch im Standard ROM. Mit denen kann man auch z.B. Tabellen machen.

Im Graphikmode geht's natürlich. Da muß man ja jedes Pixel selbst setzen, bzw. macht dies die _outtext function. Solange man nur Text schreibt, sieht man auch nicht daß man im Graphicmode ist.

P.S: Hoffentlich schaffe ich es heute Abend mal unter OS/2 die Watcom Funktionen zu suchen. Müßten in der "C Language Library Reference" aufgelistet sein. Müßte man ev. DOS als Zielplatform angeben? Übrigens fehlen mir bei einer der letzten Watcom Versionen auch die simple Window Funktionen. Vielleicht wurde da ja noch mehr rausgenommen.

Re: Größere Symbole in C/C++ im Textmodus (von: Andi B., 13:08:10)
Hab gerade mal in einer vituellen Machine unter eCS OW1.3 installiert. Die Funktionen sind noch immer da, zumindest in der Hilfe (C Library Reference)

Re: Größere Symbole in C/C++ im Textmodus (von: Hermann Mahr, 14:31:17)
Danke für die Ausführungen.
Für die von mir größer gewünschten Zahlen hatte ich mir auch schon vorgestellt, zum Beispiel für die Anzeige und den Ausdruck von Sudoku-Puzzles, kleine graphische Fenster, die gerade in die jeweils eines des 81 Matrixfelder eines Sudoku-Gerüstes ausfüllen ohne deren Begrenzungslinien zu verletzen, zu basteln, die dann größere Zahlen abbilden können.
Mein SUDOKU-Programm zur Erzeugung und zum Ausdrucken von SUDOKU-Puzzles ist bei Hobbes im Verzeichnis

/pub/os2/games/puzzle/sudo.zip

zu finden, falls es interessiert, warum ich diese Anfrage in dieses Forum gestellt habe. Dann kann man sehen, woher mein Wunsch nach größeren Zahlen im Textmodus herrührt.

MfG,
Hermann Mahr.


( Zeige die Threadübersicht ) [ Version zum Drucken ] ( Zur Startübersicht )

Datum Thema
09.01.2017 *

*

Name: * eMail: Benachrichtigung

Mit * markierte Felder müssen ausgefüllt werden !


php.net OpenIT © 1998-2017 by WebTeam OS2.org