Foros del Web » Programación para mayores de 30 ;) » .NET »

Imprimir en colores en C#

Estas en el tema de Imprimir en colores en C# en el foro de .NET en Foros del Web. Hola chicos de ForosdelWeb, tengo una pequeña preguntica. Estoy haciendo una aplicacion pequeña pues apenas me estoy iniciando el mundo de C# y quisiera saber ...
  #1 (permalink)  
Antiguo 23/03/2005, 10:43
 
Fecha de Ingreso: octubre-2004
Ubicación: COLOMBIA
Mensajes: 240
Antigüedad: 19 años, 7 meses
Puntos: 3
Pregunta Imprimir en colores en C#

Hola chicos de ForosdelWeb, tengo una pequeña preguntica.
Estoy haciendo una aplicacion pequeña pues apenas me estoy iniciando el mundo de C# y quisiera saber como se hace lo siguiente.
Debo imprimir una frase en colores por ejemplo

Radical
Ed
No
sabe C#
Me entienden?, osea, ir alternando en colores frases.
Tengo esta pequeña aplicacion puede tener muchos errores, ya que no tengo donde compilarlos solo estoy probando y aprendiendo, lo que hace es capturar e imprimir un vector de 20 posiciones.

Código:
using System;
namespace vector
{
 public struct nodo
 {
  int[] cedula;
  string[] nombre;
  string[] ape;
 }
 class vectorApp
 {
   public static void Main()
   {
     ushort num=20;
     //aqui va la captura del vector con un for y todo eso
    
     //esta es la impresion
    for(int x=1;x<num;x++)
    {
      Console.WriteLine("{0}          {0}          {0}",cedula[x], nombre[x], ape[x]);
      Console.WriteLine();
    }
    string a=Console.ReadLine(); 
   }
 }
}
Se debe imprimir cedula nombre y apellido en la siguiente linea alternando los colores.
Gracias chao
  #2 (permalink)  
Antiguo 23/03/2005, 11:41
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Hola RadicalEd, mira.. si vas empezando con c#, para ir cambiando los colores de la consola ya te tienes que meter con las APIS y el kernel, que esos conceptos si vas empezando tal vez no sean muy claros.., te recomiendo que empezaras con otras cosas mas sencillas..

Pero de todas formas si alguien alguna vez quiso saber como poner colores en modo consola aqui les dejo un ejempo sencillo usando un puntero

Cita:
[DllImport("kernel32.dll")]
public static extern bool SetConsoleTextAttribute(IntPtr hConsoleOutput, int wAttributes);

[DllImport("kernel32.dll")]
public static extern IntPtr GetStdHandle(uint nStdHandle);

[STAThread]
static void Main(string[] args)
{
uint STD_OUTPUT_HANDLE = 0xfffffff5;
IntPtr hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

for (int i=0;i<=10;i++)
{
SetConsoleTextAttribute(hConsole,15 );
Console.WriteLine("RootK" + i.ToString());
Console.WriteLine();
}
Console.Read();
}
Sin olvidarse que hay que importar el namespace System.Runtime.InteropServices; para poder hacer uso de las DLLImports..

Espero que les sirva tambien a los demas.

Cualquier cosa por aqui andamos..
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 23/03/2005, 11:49
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 3 meses
Puntos: 50
Ahhh y por cierto... retomando la pregunta original de como alternarlo podrías manejar una bandera.. y sería algo así:
Cita:
...
..
Boolean b = false;

for (int i=0;i<=10;i++)
{
if (b)
{
b = false;
SetConsoleTextAttribute(hConsole,15 ); }
else
{
SetConsoleTextAttribute(hConsole,18 );
b = true; }

Console.WriteLine("Lalo" + i.ToString());
Console.WriteLine();
}
Donde despues de SetConsoleTextAttribute los numeros indican el color

Y para ir obtenido los colores sería así:

sColor = foreground + background * 16

Donde 0=black 1=blue 2=green 4=red y asi sucesivamente hasta el 15=white

Ya puedes hacer tus pruebas y te puedes entretener un rato sacando tus colores... jeje
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 00:26.