Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
7m 51s
Spectre.Console es un paquete NuGet que permite a los desarrolladores .NET crear aplicaciones de consola visualmente ricas. En su serie Spectre Console Series, Tim Corey muestra cómo utilizar funciones como avisos interactivos, tablas, pantallas de progreso, etc. para transformar una simple ventana de consola en algo mucho más profesional.
En este artículo, profundizaremos en la función del panel de la consola de Spectre a través del vídeo de Tim Corey "Paneles de contenido y llamadas - Serie de la consola de Spectre" Utilizando los ejemplos de Tim, veremos cómo crear paneles, explorar sus características y mostrar datos en diferentes estilos, todo dentro del espacio disponible de la consola.
Tim comienza el vídeo (0:00) recordándonos que Spectre.Console permite convertir las aplicaciones de consola en C# en aplicaciones visualmente atractivas e informativas. En esta lección (0:15), vamos a crear paneles, que pueden actuar como simples llamadas o incluso mini tablas, dependiendo de sus necesidades.
En el minuto 0:34, Tim escribe un ejemplo directamente en Visual Studio. Muestra cómo crear una nueva instancia de un panel:
var panel = new("Tim Corey");
AnsiConsole.Write(panel);Dim panel = New Panel("Tim Corey")
AnsiConsole.Write(panel)Señala (0:47) que AnsiConsole.Write() acepta un objeto renderizable - y como un Panel implementa IRenderable, encaja perfectamente. Al ejecutar el código en 1:02 aparece un simple recuadro alrededor del texto "Tim Corey" Incluso este pequeño espacio puede ser útil para llamar a una nota, resaltar un prompt o separar la entrada del usuario de otra salida de la consola.

A continuación, Tim pasa a demostrar las características del panel. En el minuto 1:22 retoca el estilo del borde:
panel.Border = BoxBorder.Rounded;panel.Border = BoxBorder.RoundedEl panel tiene un borde redondeado, uno de los diferentes estilos disponibles. Observa que también podrías elegir un doble borde u otras opciones para que coincidan con tus temas personalizados codificados por colores o acentos azul y verde.
En el minuto 1:42, Tim ajusta el relleno dentro del panel:
panel.Padding = new(2, 0);panel.Padding = New Padding(2, 0)Explica (2:16) que el relleno en la consola no es como los píxeles en la web, sino que se basa en el ancho de los caracteres y los retornos de línea. Un número tan grande como 5 crea un gran panel que ocupa gran parte del área disponible. Cuenta el espacio para demostrar cómo funciona el acolchado (2:35).
Esta capacidad de ajustar el espacio alrededor del contenido le permite diseñar paneles que se adapten a su diseño, tanto si muestra una tabla var, un gráfico de barras o cualquier otro dato.
A las 3:37 Tim añade un encabezado al panel:
panel.Header("My Name");panel.Header("My Name")Cuando ejecuta el código en el minuto 3:51, aparece el título en el borde. Pero el contenido es lo de menos. Lo soluciona (4:04) cambiando el relleno:
panel.Padding = new (1, 0);panel.Padding = New Padding(1, 0)Esto crea un pequeño espacio entre el encabezado y el texto. Tim señala (4:16) que usar encabezados y espaciamiento te permite etiquetar tus paneles claramente, útil cuando estás mostrando el progreso de una tarea, una pantalla en vivo, o incluso una tarea de larga duración con una barra de progreso en pantalla.
A continuación, Tim muestra cómo colocar una lista de cadenas en un panel. En el minuto 4:26 trae una lista de nombres de una lección anterior y muestra cómo unirla en una sola cadena:
string panelInfo = string.Join('\n', names);
var panel = new Panel(panelInfo)
.Header("Default Names");Dim panelInfo As String = String.Join(vbLf, names)
Dim panel = New Panel(panelInfo) _
.Header("Default Names")Esto contrae la lista en una sola cadena con saltos de línea (5:02). Ejecutándolo (5:28) muestra la lista ordenadamente dentro del panel, cada elemento en su propia línea. Esta técnica te permite presentar datos o propiedades de objetos de una forma fuertemente tipada pero renderizada como texto.

Tim también destaca (5:44) que se puede utilizar el marcado de texto enriquecido para añadir color personalizado a elementos específicos. Por ejemplo:
"[red]Bilbo Baggins[/]""[red]Bilbo Baggins[/]"Esto muestra cómo un panel de consola Spectre puede manejar no sólo cadenas simples, sino también contenido con estilo, permitiendo temas, texto en negrita o elementos codificados por colores.

En el minuto 6:19, Tim responde a la pregunta de cómo centrar el contenido. Una simple cadena de texto no servirá. En su lugar, debe utilizar un objeto renderizable. Realiza una demostración (6:34):
Panel panel = new(new Markup(panelInfo).Centered());Dim panel As New Panel(New Markup(panelInfo).Centered())Esto convierte la cadena en un Markup, llama a .Centered(), y lo asigna al panel. La ejecución del código (7:01) muestra todos los nombres centrados. Esto es especialmente útil si estás creando una nueva tabla, un nuevo gráfico de barras o cualquier control interactivo y deseas que el contenido se alinee horizontalmente en el espacio disponible.

Tim también señala (7:07) que los paneles son IRenderizables, por lo que se pueden anidar dentro de tablas u otros paneles. Esto hace posible construir visualizaciones compuestas: por ejemplo, un panel que contenga un prompt, una tabla var y un gráfico de barras uno al lado del otro, o utilizar paneles para mostrar el progreso de archivos para diferentes tareas.
Cuando Tim termina (7:14), reitera que los paneles son IRenderizables, lo que significa que puedes insertarlos dondequiera que Spectre.Console espere un objeto renderizable: dentro de tablas, dentro de pantallas en vivo o en otros diseños. Esta flexibilidad te permite combinar paneles con otros componentes de Spectre.Console como mensajes interactivos, mostrar barras de progreso, y temas personalizados codificados por colores para crear aplicaciones de consola .NET pulidas.
Un panel de consola de Spectre es una forma sencilla pero potente de resaltar contenido, solicitar la entrada del usuario o enmarcar datos en su aplicación de consola.
Los paneles admiten diferentes estilos: redondeado, doble, encabezados personalizados y relleno para controlar el espacio.
Puede mostrar listas, utilizar marcas de texto enriquecido para temas de color personalizados e incluso centrar el contenido con Markup.Centered().
Dado que un panel es un objeto renderizable, puede anidarlo en tablas, combinarlo con visualizaciones de progreso o gráficos de barras y crear diseños interactivos complejos.
Todo esto está disponible simplemente instalando el paquete NuGet y utilizando su API fuertemente tipada dentro de su proyecto .NET o Visual Studio.
Si sigues el vídeo de Tim Corey, podrás empezar a utilizar con confianza los paneles de Spectre.Console para crear experiencias de consola pulidas y ricas en datos con cabeceras, temas personalizados y salidas con un formato ordenado, todo ello sin salir del mundo de la consola.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy