Presta atención porque en esta reseña vas a encontrar el arreglo que buscas.
Solución:
Prueba esto en su lugar:
private static void centerText(String text)
Console.Write(new string(' ', (Console.WindowWidth - text.Length) / 2));
Console.WriteLine(text);
El problema con su código inicial fue que su texto empieza en el centro de la pantalla. Desea que el centro del texto esté allí.
Vas a hacer un poco más de trabajo si quieres imprimir párrafos completos centrados así.
El texto pasado puede tener espacios en blanco como rn
luego elimínelo antes de llamar a la escritura como
string textClean = Regex.Replace(text, @"([rn])", string.Empty);
// Then center on text clean
Tengo mi propio método para llamar a los encabezados de la consola:
public static void Header(string title, string subtitle = "", ConsoleColor color = ConsoleColor.White)
int windowWidth = 90 - 2;
string titleContent = String.Format("║0," + ((windowWidth / 2) + (title.Length / 2)) + "1," + (windowWidth - (windowWidth / 2) - (title.Length / 2) + 1) + "", title, "║");
string subtitleContent = String.Format("║0," + ((windowWidth / 2) + (subtitle.Length / 2)) + "1," + (windowWidth - (windowWidth / 2) - (subtitle.Length / 2) + 1) + "", subtitle, "║");
Console.WriteLine("╔════════════════════════════════════════════════════════════════════════════════════════╗");
Console.WriteLine(titleContent);
if (!string.IsNullOrEmpty(subtitle))
Console.WriteLine(subtitleContent);
Console.WriteLine("╚════════════════════════════════════════════════════════════════════════════════════════╝");
Entonces lo llamas así YourStaticClass.Header("Test", "Version 1.0");
Debe tener un aspecto como este:
╔════════════════════════════════════════════════════════════════════════════════════════╗
║ Test ║
║ Version 1.0 ║
╚════════════════════════════════════════════════════════════════════════════════════════╝
Puedes reemplazar el 90
en windowsWidth
con Console.WindowWidth
ACTUALIZAR – Febrero de 2019: código limpio y tamaño dinámico
///
/// Application header, also sets the console title
///
/// Title of application
/// Subtitle of application
/// Foreground color
public static void Header(string title, string subtitle = "", ConsoleColor foreGroundColor = ConsoleColor.White, int windowWidthSize = 90)
Console.Title = title + (subtitle != "" ? " - " + subtitle : "");
string titleContent = CenterText(title, "║");
string subtitleContent = CenterText(subtitle, "║");
string borderLine = new String('═', windowWidthSize - 2);
Console.ForegroundColor = foreGroundColor;
Console.WriteLine($"╔borderLine╗");
Console.WriteLine(titleContent);
if (!string.IsNullOrEmpty(subtitle))
Console.WriteLine(subtitleContent);
Console.WriteLine($"╚borderLine╝");
Console.ResetColor();
///
/// Align content to center for console. Can be used with decoration if used inside menu or header
///
/// Content to center
/// Left and right decoration, default is empty/none
/// Center aligned text
public static string CenterText(string content, string decorationString = "", int windowWidthSize = 90)
int windowWidth = windowWidthSize - (2 * decorationString.Length);
return String.Format(decorationString + "0," + ((windowWidth / 2) + (content.Length / 2)) + "1," + (windowWidth - (windowWidth / 2) - (content.Length / 2) + decorationString.Length) + "", content, decorationString);
Ten en cuenta dar recomendación a esta sección si te fue útil.