Frage von askandanswer23, 8

Wie kann ich die Textlänge an die Konsolengröße anpassen?

Also ich will zu beispiel das zeichen "-" als abgrenzung nehmen, welches eine komplette zeile der konsole ausfüllen soll und wenn jetzt der nutzer die konsole breiter macht, das das Zeichen automatisch sich an die konsolengröße anpasst und wieder die komplette zeile ausfüllt. Sollte bein verkleinern auch der fall sein. Wie mache ich das?

Antwort
von regex9, 5

1.Du brauchst die Breite, die der Text einnimmt. Ermittle dazu erst einmal die Breite eines Bindestrichs. In C# würde das bspw. mit dem TextRenderer funktionieren: https://msdn.microsoft.com/de-de/library/y4xdbe66(v=vs.110).aspx

2. Ermittle die Breite des Konsolenfensters. In C# wäre das bspw. die Eigenschaft WindowWidthhttps://msdn.microsoft.com/de-de/library/system.console.windowwidth(v=vs.110).aspx

3. Einfache Berechnung:

Breite des Konsolenfensters / Breite des Bindestrichs = Anzahl Bindestriche

Natürlich ist das noch lange nicht akkurat, du wirst von der Fensterbreite außerdem noch einen Wert abziehen müssen, der den Innenabstand des Fensters zum Textbereich bestimmt.

4. Falls das nicht die erwünschte Wirkung erzielt und zu viele Zeichen unerwünscht auf die neue Zeile landen, könntest du auch überlegen, die nicht einfach immer überschreiben zu lassen. Heißt, erst schreibst du deine Zeile an Bindestrichen, mit einer unbestimmt großen Zahl an Bindestrichen. Dann hüpfst du mit dem Cursor zur vorletzten Zeile 1 (Zeile 0 voller Bindestriche soll ja unberührt bleiben) und überschreibst dort mit dem eigentlich weiterführenden Text die Bindestriche, die zu viel waren.

Um es noch einmal bildlich zu zeigen:

//A: So soll es aussehen:


------------------------------------- Welcome

//B: So sieht es nach der Ausgabe aller Bindestriche aus:

------------------------------------- ---- <Cursorposition>

//C: Also springst du mit dem Cursor in Zeile 1 und schreibst dort weiter

------------------------------------- Welcome<Cursorposition>

Mittels Wagenrücklauf \r kannst du an den Anfang einer Zeile springen. in C# bpsw. lässt sich die Cursorposition außerdem mittels CursorTop verschieben: https://msdn.microsoft.com/de-de/library/system.console.cursortop(v=vs.110).aspx.

Kommentar von askandanswer23 ,

Danke hat geklappt :) und danke für die bildiche darstellung, hat sehr geholfen

Antwort
von Momischmiddi, 7

Um was für eine Konsole handelt es sich denn?

Kommentar von askandanswer23 ,

Eine Win32 Konsole

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten