¿Cuál es la mejor manera de escribir datos en la consola de texto en ubicaciones arbitrarias en la pantalla y con colores de fondo/fondo personalizados?Consola avanzada IO en .NET
Respuesta
Console.SetCursorPosition, Console.BackgroundColor, Console.ForegroundColor y Console.ResetColor.
Tenga en cuenta que estos se agregaron a .NET Framework en la versión 2.0. Antes de eso, necesitarías PInvoke.
De acuerdo con la Mono Library List hay al menos dos bibliotecas que podrían ser útiles para usted:
Curses# utiliza PDCurses en Windows y en Linux ncurses. Es casi una plataforma cruzada en un nivel binario.
MonoCurses es un enlace con licencia MIT-X11 de curses, e incluye el kit de herramientas GUI minimalista gui.cs para crear aplicaciones basadas en consola.
This posting muestra cómo utilizar los métodos de clase de consola para crear una barra de progreso en la consola - que podría ser un buen ejemplo para referirse a ....
función más eficaz es WriteConsoleOutput
. Es API Win32 nativa, pero se puede utilizar en aplicación .NET usando p/invocar:
[DllImport("kernel32.dll", SetLastError = true, EntryPoint = "WriteConsoleOutputW")]
public static extern bool WriteConsoleOutput(IntPtr hConsoleOutput, CHAR_INFO[,] lpBuffer, COORD dwBufferSize,
COORD dwBufferCoord, ref SMALL_RECT lpWriteRegion);
Dónde CHAR_INFO es una estructura:
estructura/// <summary>
/// CharSet.Unicode is required for proper marshaling.
/// </summary>
[StructLayout(LayoutKind.Explicit, CharSet = CharSet.Unicode)]
public struct CHAR_INFO
{
[FieldOffset(0)]
public char UnicodeChar;
[FieldOffset(0)]
public char AsciiChar;
[FieldOffset(2)] //2 bytes seems to work properly
public Attr Attributes;
public override string ToString() {
return string.Format("CHAR_INFO : '{0}' ({1})", AsciiChar, Attributes);
}
}
Attr:
/// <summary>
/// CHAR_ATTRIBUTES native structure.
/// </summary>
[Flags]
public enum Attr : ushort {
NO_ATTRIBUTES = 0x0000,
/// <summary>
/// Text color contains blue.
/// </summary>
FOREGROUND_BLUE = 0x0001,
/// <summary>
/// Text color contains green.
/// </summary>
FOREGROUND_GREEN = 0x0002,
/// <summary>
/// Text color contains red.
/// </summary>
FOREGROUND_RED = 0x0004,
/// <summary>
/// Text color is intensified.
/// </summary>
FOREGROUND_INTENSITY = 0x0008,
/// <summary>
/// Background color contains blue.
/// </summary>
BACKGROUND_BLUE = 0x0010,
/// <summary>
/// Background color contains green.
/// </summary>
BACKGROUND_GREEN = 0x0020,
/// <summary>
/// Background color contains red.
/// </summary>
BACKGROUND_RED = 0x0040,
/// <summary>
/// Background color is intensified.
/// </summary>
BACKGROUND_INTENSITY = 0x0080,
/// <summary>
/// Leading byte.
/// </summary>
COMMON_LVB_LEADING_BYTE = 0x0100,
/// <summary>
/// Trailing byte.
/// </summary>
COMMON_LVB_TRAILING_BYTE = 0x0200,
/// <summary>
/// Top horizontal
/// </summary>
COMMON_LVB_GRID_HORIZONTAL = 0x0400,
/// <summary>
/// Left vertical.
/// </summary>
COMMON_LVB_GRID_LVERTICAL = 0x0800,
/// <summary>
/// Right vertical.
/// </summary>
COMMON_LVB_GRID_RVERTICAL = 0x1000,
/// <summary>
/// Reverse foreground and background attribute.
/// </summary>
COMMON_LVB_REVERSE_VIDEO = 0x4000,
/// <summary>
/// Underscore.
/// </summary>
COMMON_LVB_UNDERSCORE = 0x8000
}
COORD y SMALL_RECT:
[StructLayout(LayoutKind.Sequential)]
public struct COORD
{
public short X;
public short Y;
public COORD(short X, short Y)
{
this.X = X;
this.Y = Y;
}
};
[StructLayout(LayoutKind.Sequential)]
public struct SMALL_RECT
{
public short Left;
public short Top;
public short Right;
public short Bottom;
public SMALL_RECT(short left, short top, short right, short bottom) {
Left = left;
Top = top;
Right = right;
Bottom = bottom;
}
}
- 1. Archivo asíncrono IO en .Net
- 2. Redirigir Python IO incrustado a una consola creada con AllocConsole
- 3. Búsqueda avanzada en Vim
- 4. avanzada SQL en rieles
- 5. biblioteca gif avanzada
- 6. IO asincrónico en Java?
- 7. ¿Cómo borrar la consola en C# .net?
- 8. ¿Cómo utiliza .NET los subprocesos IO o los puertos de terminación IO?
- 9. . Aplicación de consola .Net que no muestra una consola
- 10. git jenkins función avanzada
- 11. C# - herencia avanzada
- 12. Yii url avanzada reescribir
- 13. Scala, extensión genérica avanzada
- 14. ¿Alguien tiene puntos de referencia de componentes .NET Excel IO?
- 15. ¿Cómo crear código comprobable usando clases de IO de .Net?
- 16. EUnit y io: formato
- 17. ¿Es posible escribir en la consola en color en .NET?
- 18. recursiva IO en Haskell
- 19. Haskell mónada: IO [doble] a [IO Doble]
- 20. Cuenta avanzada y unión en Rails
- 21. Funcionalidad de búsqueda avanzada en Doxygen?
- 22. ¿Implementación de búsqueda avanzada en iphone?
- 23. avanzada Python lista de comprensión
- 24. Php/MySql 'Búsqueda avanzada' Página
- 25. jqGrid búsqueda avanzada 'beforeSearch' opción?
- 26. Utilizando la clase .NET BackgroundWorker en la aplicación de consola
- 27. ¿Cómo bloqueo la consola entre subprocesos en C# .NET?
- 28. que muestra el porcentaje en la aplicación de consola .net
- 29. Redirigir la consola a una cadena en un programa .NET
- 30. . Consola .Net Aplicación en la bandeja del sistema