Centreren Text

Status
Niet open voor verdere reacties.

555Martijn

Gebruiker
Lid geworden
15 jun 2008
Berichten
163
Is het mogelijk om mijn menutje te centreren?

s1.png


is hier een functie voor, iets simpels zoals in HTML <center> text </center>, niet denk?
Als dat er niet is, wat is dan de makkelijkste manier? gewoon 30-40 spaties?
 
Wat dacht je van gewoon spaties invoeren (voor elke regel)
 
Yep, dat is waarschijnlijk wel het simpelst :p, maar als je dan het programma fullscreen doe, of resize etc word het al snel lelijk. Maar dit zal ik wel gebruiken als hier geen functie voor is, dus kan iemand mij helpen?
 
\t als tab :D

volgens mij had je ook nog iets met cout.width ofzo, moet je daar even op zoeken ;)
 
Zoiets zou je kunnen doen met setw(). Voorbeeld alhier.

Natuurlijk wil je dan wel even weten hoe breed het scherm is, dus dan moet je dat ook nog te weten komen :p
Als je op windows draait zou je hiervoor eens naar GetConsoleScreenBufferInfo
 
Lastige functie is, het lukt mij niet echt om het aan de praat te krijgen, kan je een voorbeeldje geven? (mss een simple hello world maar dan centreerd :p)
 
Misschien vergis ik mij, maar met een paar spaties was je nu al gereed met het menuutje?
 
Jawel, maar het groote van het scherm kan je ook aanpassen, als je het scherm dan breeder zou maken dan staat het niet meer gecentreerd.
 
Mogelijk, maar waarmee heb je dat menuutje gemaakt?

Ik zou op "C++" gokken ;)

Lastige functie is, het lukt mij niet echt om het aan de praat te krijgen, kan je een voorbeeldje geven? (mss een simple hello world maar dan centreerd :p)

yup:

Code:
#include <iostream>
#include <iomanip>
#include <windows.h>
#include <string>
using namespace std;

int main()
{
    CONSOLE_SCREEN_BUFFER_INFO info;
    HANDLE hConsole;
	hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    std::string str = "Een menu string met een x lengte";
    
    while(1){
        GetConsoleScreenBufferInfo(hConsole, &info);
        //de size van het scherm/2 plus de helft van de string
        int center = info.dwSize.X/2 + (str.length()/2);
        cout << setw(center) << str << "\n";
        Sleep(1000);
    }
    return 0;
}

De code spreekt aardig voor zich. Mocht je nog vragen hebben dan hoor ik het wel!

p.s. code werkt helaas alleen op windows zoals je waarschijnnlijk wel ziet
 
0_o.
Dit is lastig ;).
Bedankt voor je reactie!

Als ik met deze code meerdere verschillende regels wil hebben, moet ik die allemaal in die string zetten toch? is het niet mogelijk dat ik alleen...

cout << setw(center) << "test" << endl;

zoiets kan doen? en niet de string oproepen en daarvan de text uitwerpen? :p
 
Ja dat kan, maar dan is je tekst nog steeds links uitgelijnd alleen dan midden in het scherm :p

De truuk is juist dat een string de .length() functie heeft waaraan je kunt zien hoeveel tekens er in de string staan. Aan de hand daarvan kun je dan weer kijken hoeveel witruimte je moet maken om zowel links als rechts de uitvulling gelijk te laten worden
 
Aha, nou bedankt voor je hulp maar ik ga denk toch gewoon 3 tabs gebruiken :rolleyes:.

Nogmaals bedankt!
<drukt op vraag opgelost>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan