Console en couleur

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 117 fois - Téléchargée 33 fois

Contenu du snippet

Voici une petite classe permettant de changer la couleur du texte que vous affichez dans la console. Il est possible de changer la couleur de fond, et la couleur du texte en elle même. Cette source est tirée d'un exemple chopé sur le site c-sharpcorner.com.

Source / Exemple :


using System;
using System.Runtime.InteropServices;

public class Konsole{
	// Les différentes couleurs possibles.
	public enum CharacterAttributes{
		FOREGROUND_BLUE = 0x0001,
		FOREGROUND_GREEN = 0x0002,
		FOREGROUND_RED = 0x0004,
		FOREGROUND_INTENSITY = 0x0008,
		BACKGROUND_BLUE = 0x0010,
		BACKGROUND_GREEN = 0x0020,
		BACKGROUND_RED = 0x0040,
		BACKGROUND_INTENSITY = 0x0080,
		COMMON_LVB_LEADING_BYTE = 0x0100,
		COMMON_LVB_TRAILING_BYTE = 0x0200,
		COMMON_LVB_GRID_HORIZONTAL = 0x0400,
		COMMON_LVB_GRID_LVERTICAL = 0x0800,
		COMMON_LVB_GRID_RVERTICAL = 0x1000,
		COMMON_LVB_REVERSE_VIDEO = 0x4000,
		COMMON_LVB_UNDERSCORE = 0x8000
	}
	
	// Importation des fonctions de l'API de windows qui nous seront nécesaires
	[DllImport("kernel32.dll", SetLastError=true)]
		private static extern bool SetConsoleTextAttribute(IntPtr hConsoleOutput, CharacterAttributes wAttributes);
		
	[DllImport("kernel32.dll")]
		private static extern IntPtr GetStdHandle(int nStdHandle); 
	
	public Konsole(){}

	// Fonction permettant de changer les attributs de la console
	public static void SetConsoleTextAttribute(CharacterAttributes wAttributes){
		// "GetStdHandle(-11)" retourne la console output... me demandez pas pourquoi le -11.
		SetConsoleTextAttribute(GetStdHandle(-11), wAttributes);
	}
	
	// Permet d'écrire une ligne de texte avec les attributs en cours.
	public static void WriteLine(string str){
		Console.WriteLine(str);
	}
	
	// Permet d'écrire une ligne de texte en changeant les attributs de couleur.
	public static void WriteLine(string str, CharacterAttributes wAttributes){
		SetConsoleTextAttribute(wAttributes);
		Console.WriteLine(str);
	}
	
	// Permet d'écrire du texte avec les attributs en cours.
	public static void Write(string str){
		Console.Write(str);
	}
	
	// Permet d'écrire du texte en changeant les attributs de couleur.
	public static void Write(string str, CharacterAttributes wAttributes){
		SetConsoleTextAttribute(wAttributes);
		Console.Write(str);
	}
}

Conclusion :


Vous allez me demander l'utilité d'un trucs pareil... et bien c'est simple, quand on veut afficher pas mal d'infos dans la console, histoire de corriger quelques bugs, et bien c'est bien sympa de pouvoir s'y retrouver grave à des couleurs, voila.

Ha oui, aussi, vu que toutes les fonctions sont statiques, vous pouvez utiliser la classe comme ca :
Konsole.WriteLine("red", Konsole.CharacterAttributes.FOREGROUND_RED);

ou encore...
Konsole.WriteLine("test");

bref, ca remplace le console habituel.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
256
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
30 mai 2016
4
Et il est possible de mettre en gras ou encore en clignotant ?

J'ai d'ailleurs pas compris ce que font COMMON_LVB_LEADING_BYTE et COMMON_LVB_TRAILING_BYTE, ont peut m'éclairer ?
Messages postés
47
Date d'inscription
jeudi 11 janvier 2007
Statut
Membre
Dernière intervention
18 novembre 2007

Excellent comme écriture. Je l'étudie ce bout de code et cà marche en plus.
Messages postés
341
Date d'inscription
mercredi 8 juin 2005
Statut
Membre
Dernière intervention
10 février 2009
2
Vachement bien, Merci encore
Messages postés
305
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 août 2011
4
Y a pas de koi ! :-)
Messages postés
231
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
26 février 2010

Merci beaucoup, c'est moche mais ça marche !
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.