Ver Mensaje Individual
  #2  
Antiguo 01-02-2008
Avatar de PeterPunk
PeterPunk PeterPunk is offline
Miembro
 
Registrado: ene 2008
Ubicación: Vigo
Posts: 22
Reputación: 0
PeterPunk Va por buen camino
Buenas julyus, pues la verdad es que no hay muchos colores para escoger: rojo, verde, azul y la suma de ellos (bueno, y la ausencia que es el negro). Eso sí tienen una "variante" brillante:
un ejemplo
Código Delphi [-]
program Colores;
{$APPTYPE CONSOLE}
uses
  SysUtils, Windows;
const
  Fondo_Rojo = BACKGROUND_RED;
  Fondo_Azul = BACKGROUND_BLUE;
  Fondo_Verde = BACKGROUND_GREEN;
  Fondo_Amarillo = BACKGROUND_RED or BACKGROUND_GREEN;
  Fondo_Magenta = BACKGROUND_RED or BACKGROUND_BLUE;
  Fondo_Agua = BACKGROUND_BLUE or BACKGROUND_GREEN;
  Fondo_Blanco = BACKGROUND_RED or BACKGROUND_BLUE or BACKGROUND_GREEN;
  Fondo_Brillante = BACKGROUND_INTENSITY;
  Texto_Rojo = FOREGROUND_RED;
  Texto_Azul = FOREGROUND_BLUE;
  Texto_Verde = FOREGROUND_GREEN;
  Texto_Amarillo = FOREGROUND_RED or FOREGROUND_GREEN;
  Texto_Magenta = FOREGROUND_RED or FOREGROUND_BLUE;
  Texto_Agua = FOREGROUND_BLUE or FOREGROUND_GREEN;
  Texto_Blanco = FOREGROUND_RED or FOREGROUND_BLUE or FOREGROUND_GREEN;
  Texto_Brillante = FOREGROUND_INTENSITY;
var
  ConsoleHandle: integer;
  Coord: TCoord;
  MaxX, MaxY: Short;
  Numero: Cardinal;
procedure GotoXY(X, Y : Word);
begin
  Coord.X := X;
  Coord.Y := Y;
  SetConsoleCursorPosition(ConsoleHandle, Coord);
end;
procedure cls;
begin
  GotoXY(0, 0);
  FillConsoleOutputCharacter(ConsoleHandle, ' ', MaxX * MaxY, Coord, Numero);
  GotoXY(0, 0);
end;
procedure Texto_Y_Fondo(Atributos: Word);
begin
  GotoXY (0, 0);
  cls;
  FillConsoleOutputAttribute(ConsoleHandle, Atributos, MaxX * MaxY, Coord, Numero);
  SetConsoletextAttribute(ConsoleHandle, Atributos);
end;
begin
  ConsoleHandle := GetStdhandle(STD_OUTPUT_HANDLE);
  Coord := GetLargestConsoleWindowSize(ConsoleHandle);
  MaxX := Coord.X;
  MaxY := Coord.Y;
  SetConsoleTitle('Demostracion de colores');
  SetConsoleTextAttribute(ConsoleHandle, Fondo_Amarillo or Fondo_Brillante or Texto_Magenta or Texto_Brillante);
  WriteLn('Texto magenta brillante sobre fondo amarillo brillante');
  WriteLn;
  SetConsoleTextAttribute(ConsoleHandle, Fondo_Rojo or Fondo_Brillante or Texto_Amarillo);
  WriteLn('Texto amarillo mate sobre fondo rojo brillante');
  WriteLn;
  SetConsoleTextAttribute(ConsoleHandle, Texto_Blanco);
  WriteLn('Pulsa Enter');
  ReadLn;
  Texto_Y_Fondo(Fondo_Magenta or Fondo_Brillante or Texto_Rojo);
  WriteLn('Todo cambiado a texto en rojo mate sobre fondo magenta brillante');
  WriteLn;
  WriteLn('Pulsa Enter para borrar la pantalla');
  ReadLn;
  cls;
  Texto_Y_Fondo(Texto_Blanco);
  GotoXY(10,10);
  Writeln('Esto es todo');
  ReadLn;
  GotoXY(10, 10);
  FillConsoleOutputAttribute(ConsoleHandle, Texto_Rojo or Texto_Brillante, 4, Coord, Numero);
  GotoXY(15, 10);
  FillConsoleOutputAttribute(ConsoleHandle, Texto_Verde or Texto_Brillante, 2, Coord, Numero);
  GotoXY(18, 10);
  FillConsoleOutputAttribute(ConsoleHandle, Texto_Azul or Texto_Brillante, 4, Coord, Numero);
  GotoXY(0,11);
  ReadLn;
end.
Cuando lo pruebes ya verás que los nombres que les di a las constantes de los colores mucho no se parecen. Realmente serían los nombres si se les añade el flag de "Intensity" ya que sin ella son muy oscuros (por ejemplo el amarillo sería como un marrón-verdecido o algo así)
Responder Con Cita