Saltar al pie de página
Iron Academy Logo
Aplicación C#
Aplicación C#

Otras categorías

Paneles de contenido y llamadas - Serie Spectre Console

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.

Creación de un panel de consola básico de Spectre

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);
var panel = new("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.

Spectre Console Content Panels Callouts 1 related to Creación de un panel de consola básico de Spectre

Explorando las características del panel: Bordes y relleno

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.Rounded;

El panel tiene un borde redondeado, uno de los diferentes estilos disponibles. También se puede optar por un doble borde u otras opciones que se adapten a los temas personalizados con código de colores o acentos azules y verdes.

En el minuto 1:42, Tim ajusta el relleno dentro del panel:

panel.Padding = new(2, 0);
panel.Padding = new(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ñadir una cabecera y personalizar los estilos

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 (1, 0);

Esto crea un pequeño espacio entre el encabezado y el texto. Tim señala (4:16) que el uso de encabezados y espaciado permite etiquetar los paneles con claridad, lo que resulta útil cuando se muestra el progreso de una tarea, una visualización en directo o incluso una tarea de larga duración con una barra de progreso en pantalla.

Visualización de listas dentro de un panel

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");
string panelInfo = string.Join('\n', names);
var 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.

Spectre Console Content Panels Callouts 2 related to Visualización de listas dentro de un panel

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.

Spectre Console Content Panels Callouts 3 related to Visualización de listas dentro de un panel

Centrado de contenido con marcado y objetos renderizables

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());
Panel panel = new(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á creando una nueva tabla, un nuevo gráfico de barras o cualquier control interactivo y desea que el contenido se alinee horizontalmente en el espacio disponible.

Spectre Console Content Panels Callouts 4 related to Centrado de contenido con marcado y objetos renderizables

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.

Paneles como bloques de construcción en aplicaciones de consola

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 le permite combinar paneles con otros componentes de Spectre.Console, como avisos interactivos, barras de progreso de visualización y temas personalizados codificados por colores para crear aplicaciones de consola .NET pulidas.

Los puntos clave del vídeo de Tim

  • 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.

Hero Worlddot related to Paneles de contenido y llamadas - Serie Spectre Console
Hero Affiliate related to Paneles de contenido y llamadas - Serie Spectre Console

Gana más compartiendo lo que te gusta

¿Creas contenidos para desarrolladores que trabajan con .NET, C#, Java, Python o Node.js? ¡Convierte tu experiencia en un ingreso extra!

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame