# farbig schreiben



## Acriss (26. Juli 2007)

Hi nochmal.
ich habe festgestellt, das so ein Weißer Text auf schwarzem Hintergrund ziemlich schnell unübersichtlich wird.
Also würde ich auch gerne in Farben schreiben, zum Beispiel in Rot...
Nur hab ich 0 Idee wie das funktionieren könnte.
Bitte um Hilfe


----------



## Hallasas (26. Juli 2007)

Hallo,
herausfinden kannst du die Farbinformationen in der Eingabeaufforderung mit dem Befehl *color /?*

```
#include <windows.h>

//...

system("color c");

/...
```

Gruß Hallasas


----------



## Acriss (26. Juli 2007)

Aber wie schreibe ich damit farbig?


----------



## Wyatt (26. Juli 2007)

Heyho...

Ich glaube in der C++ Tutorialecke gibt es ein Tutorial um ein C++ Menü zu erstellen...
welches mit den Arrow-Keys und Farben arbeitet 

Hier der Link
C++ Menü Tutorial

Das sollte dir weiterhelfen!
Viel Spaß

Grüße
Felix


----------



## Acriss (26. Juli 2007)

Danke,
schau mir das heut abend mal an


----------



## Acriss (27. Juli 2007)

sry
das Tutorial hatte ich auch schon gefunden, und darin gehts um ein Menü.
Von farbig schreiben habe ich jetzt nichts gefunden


----------



## Wyatt (27. Juli 2007)

Hoi

Also eigentlich findest du die Lösung in dem Quellcode aus dem Menü-Tutorial!
Oder du versuchst es mit 

```
system("color c");
```
Wenn du danach deinen Text ausgibst, wird der in Farbe angezeigt...
Um rauszufinden, welche colors es gibt, startest du deine Eingabeaufforderung und gibst folgendes ein: 

```
color /?
```

Gruß
Felix


----------



## Acriss (27. Juli 2007)

gleich mal testen 

Ok
es klappt:
Syntax:
system("color xy");
x= Hintergrund
y= Vordergrund

Werte:
0= Schwarz
1= Dunkelblau
2= Dunkelgrün
3= Blaugrün
4= Dunkelrot
5= Lila
6= Ocker
7= Hellgrau
8= Dunkelgrau
9= Blau
A= Grün
B= Zyan
C= Rot
D= Magenta
E= Gelb
F= Weiß

Gibt es eine Möglichkeit, nur bestimmte Bereiche einzufärben, ähnlich wie im css <span> oder <div>

Und wie änder ich die schriftgröße, auch nur für einen Bestimmten Bereich?


----------



## gnomecoder (4. August 2007)

Ja, die gibt es. ist komplizierter, ich habe mal ein Tut gesehen werds ma suchen und den link rein editieren. 
mfg
Edid: Bin auf diese Lösung gestoßen ist doch garnicht so schwer.

```
#include <windows.h>
#include <iostream.h>
#include <stdlib.h>

void farbe(WORD color)
{
    SetConsoleTextAttribute(::GetStdHandle(STD_OUTPUT_HANDLE), color);
}


#define BLAU            0x0001
#define GRUEN           0x0002
#define ROT             0x0004
#define NORMAL          0x0007
#define HELLBLAU        0x0009
#define GELB            0x000e
#define BG_BLAU_ROT     0x00014
#define BG_BLAU_NORMAL  0x00017
#define BG_GELB_SCHWARZ 0x000e0
void main()
{ 
   farbe(ROT);
   cout<<" Dieser Text ist rot."<<endl;
   farbe(HELLBLAU);
   cout<<" Dieser Text ist hellblau."<<endl;
   farbe(BG_BLAU_NORMAL);
   cout<<" Dieser Text ist normal und der Hintergrund ist blau."<<endl;
   farbe(BG_GELB_SCHWARZ);
   cout<<" Dieser Text ist schwarz und der Hintergrund ist gelb."<<endl;

   system("PAUSE");
}
```


----------



## jsdfkljsdkfjlskdj (16. August 2009)

Danke für das Beispiel, kann es verwenden in meiner Projektarbeit. Aber ich habe ne Frage bzgl dieser Zeile:

SetConsoleTextAttribute:GetStdHandle(STD_OUTPUT_HANDLE), color);

Kann mir einer erklären, was die macht?

Gruß Ducky


----------



## sheel (22. August 2009)

GetStdHandle(...) liefert ein Handle (eine Art ID) für den Ausgabebereich der Konsole
Set ConsoleTextAttribute() kann dann mithilfe des Handles eine bestimmte Farbe setzen, mit der solange geschrieben wird, bis sie wieder geändert wird.

Die Farbe wird im zweiten Parameter als Nummer angegeben (in diesem Fall der Inhalt von der Variable color)

Die Nummern kannst du in Start-Ausführen-cmd->"color /?" nachschauen
A bis F sind 10 bis 15
Die Nummer ergibt sich dann aus Hintergrundfarbe mal 16 + Schriftfarbe

Gruß

PS: Dieser Thread ist 2 Jahre alt...


----------



## Matthias Reitinger (22. August 2009)

sheel hat gesagt.:


> Die Nummern kannst du in Start-Ausführen-cmd->"color /?" nachschauen
> A bis F sind 10 bis 15
> Die Nummer ergibt sich dann aus Hintergrundfarbe mal 16 + Schriftfarbe


Man kann den „Farbcode“ aber auch direkt über eine hexadezimale Konstante angeben, dann muss man nicht A-F umrechnen oder mit 16 multiplizieren. Also z.B. 0x0F für Weiß auf Schwarz, 0xFC für Rot auf Weiß etc.

Grüße, Matthias


----------

