Ir para o conteúdo do rodapé
Iron Academy Logo
Aplicação C#
Aplicação C#

Outras categorias

Painéis de conteúdo e chamadas - Série Spectre Console

Tim Corey
7m 51s

Spectre.Console é um pacote NuGet que permite aos desenvolvedores .NET criar aplicativos de console visualmente ricos. Em sua série Spectre Console, Tim Corey mostra como usar recursos como prompts interativos, tabelas, indicadores de progresso e muito mais para transformar uma simples janela de console em algo muito mais profissional.

Neste artigo, vamos analisar mais detalhadamente o recurso de painéis do Spectre Console, seguindo o vídeo de Tim Corey " Painéis de Conteúdo e Destaques – Série Spectre Console ". Usando os exemplos de Tim, veremos como criar painéis, explorar seus recursos e exibir dados em diferentes estilos — tudo dentro do espaço disponível no console.

Criando um painel de console básico do Spectre

Tim inicia o vídeo (0:00) lembrando-nos que o Spectre.Console permite transformar seus aplicativos de console C# em aplicativos visualmente atraentes e informativos. Nesta lição (0:15), vamos criar painéis, que podem funcionar como simples chamadas ou até mesmo como mini tabelas, dependendo da sua necessidade.

Aos 0:34, Tim escreve um exemplo diretamente no Visual Studio. Ele mostra como criar uma nova instância de um painel:

var panel = new("Tim Corey");
AnsiConsole.Write(panel);
var panel = new("Tim Corey");
AnsiConsole.Write(panel);

Ele observa (0:47) que AnsiConsole.Write() aceita um objeto renderizável — e como um Panel implementa IRenderable, ele se encaixa perfeitamente. Executar o código em 1:02 exibe uma caixa simples ao redor do texto "Tim Corey". Mesmo esse pequeno espaço pode ser útil para destacar uma observação, enfatizar um aviso ou separar a entrada do usuário de outras saídas do console.

Spectre Console Content Panels Callouts 1 related to Criando um painel de console básico do Spectre

Explorando os recursos do painel: bordas e espaçamento

Em seguida, Tim passa a demonstrar as funcionalidades do painel. À 1:22 ele ajusta o estilo da borda:

panel.Border = BoxBorder.Rounded;
panel.Border = BoxBorder.Rounded;

Isso confere ao painel uma borda arredondada — um dos diferentes estilos disponíveis. Ele observa que você também pode escolher borda dupla ou outras opções para combinar com seus temas personalizados com código de cores ou detalhes em azul e verde.

Às 1:42, Tim ajusta o acolchoamento dentro do painel:

panel.Padding = new(2, 0);
panel.Padding = new(2, 0);

Ele explica (2:16) que o preenchimento no console não é como pixels na web - é baseado na largura do caractere e nas quebras de linha. Um número grande como 5 cria um painel grande que preenche boa parte da área disponível. Ele conta o espaço para demonstrar como funciona o preenchimento (2:35).

Essa capacidade de ajustar com precisão o espaço ao redor do conteúdo permite que você crie painéis que se adaptem ao seu layout, seja para exibir uma tabela de variáveis, um gráfico de barras ou qualquer outro tipo de dado.

Adicionando um cabeçalho e personalizando estilos

Às 3h37, Tim adiciona um cabeçalho ao painel:

panel.Header("My Name");
panel.Header("My Name");

Quando ele executa o código às 3:51, o título aparece na borda. Mas está bem próximo do conteúdo. Ele corrige isso (4:04) alterando o preenchimento:

panel.Padding = new (1, 0);
panel.Padding = new (1, 0);

Isso cria um pequeno espaço entre o cabeçalho e o texto. Tim destaca (4:16) que o uso de cabeçalhos e espaçamento permite rotular seus painéis claramente — útil quando você está mostrando o progresso de uma tarefa, uma exibição ao vivo ou até mesmo uma tarefa de longa duração com uma barra de progresso na tela.

Exibindo listas dentro de um painel

Tim demonstra então como inserir uma lista de strings em um painel. Aos 4:26, ele traz uma lista de nomes de uma lição anterior e mostra como juntá-los em uma única sequência:

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");

Isso condensa a lista em uma única string com quebras de linha (5:02). Ao executar o código (5:28), a lista é exibida de forma organizada dentro do painel, com cada item em sua própria linha. Essa técnica permite apresentar dados ou propriedades de objetos de maneira fortemente tipada, mas renderizados como texto.

Spectre Console Content Panels Callouts 2 related to Exibindo listas dentro de um painel

Tim também destaca (5:44) que você pode usar a formatação de texto avançada para adicionar cores personalizadas a itens específicos. Por exemplo:

"[red]Bilbo Baggins[/]"
"[red]Bilbo Baggins[/]"

Isso demonstra como um painel do Spectre Console pode lidar não apenas com strings simples, mas também com conteúdo estilizado, permitindo temas, texto em negrito ou itens com código de cores.

Spectre Console Content Panels Callouts 3 related to Exibindo listas dentro de um painel

Centralizando conteúdo com marcação e objetos renderizáveis

Às 6h19, Tim responde à pergunta sobre como centralizar o conteúdo. Uma corda lisa não ficará centralizada. Em vez disso, você deve usar um objeto renderizável. Ele demonstra (6:34):

Panel panel = new(new Markup(panelInfo).Centered());
Panel panel = new(new Markup(panelInfo).Centered());

Isso converte a string em um Markup, chama .Centered() e a atribui ao painel. Executar o código (7:01) mostra todos os nomes centralizados. Isso é especialmente útil se você estiver criando uma nova tabela, um novo gráfico de barras ou qualquer controle interativo e quiser que o conteúdo esteja alinhado horizontalmente no espaço disponível.

Spectre Console Content Panels Callouts 4 related to Centralizando conteúdo com marcação e objetos renderizáveis

Tim também observa (7:07) que os painéis são IRenderizáveis, então você pode aninhá-los dentro de tabelas ou outros painéis. Isso possibilita a criação de telas compostas: por exemplo, um painel contendo um prompt, uma tabela de variáveis ​​e um gráfico de barras lado a lado, ou o uso de painéis para mostrar o progresso de arquivos para diferentes tarefas.

Painéis como blocos de construção em aplicativos de console

Ao concluir (7:14), Tim reitera que os painéis são IRenderizáveis, o que significa que você pode inseri-los onde o Spectre.Console espera um objeto renderizável — dentro de tabelas, dentro de telas ao vivo ou em outros layouts. Essa flexibilidade permite combinar painéis com outros componentes do Spectre.Console, como prompts interativos, barras de progresso e temas personalizados com código de cores, para criar aplicativos de console .NET sofisticados.

Principais conclusões do vídeo de Tim

  • Um painel do Spectre Console é uma maneira simples, porém poderosa, de destacar conteúdo, solicitar entrada do usuário ou enquadrar dados em seu aplicativo de console.

  • Os painéis suportam diferentes estilos: arredondado, duplo, cabeçalhos personalizados e espaçamento para controlar o espaço.

  • Você pode exibir listas, usar formatação de texto avançada para temas de cores personalizados e até mesmo centralizar o conteúdo com Markup.Centered().

  • Como um painel é um objeto renderizável, você pode aninhá-lo em tabelas, combiná-lo com indicadores de progresso ou gráficos de barras e criar layouts interativos complexos.

  • Tudo isso está disponível simplesmente instalando o pacote NuGet e usando sua API fortemente tipada dentro do seu projeto .NET ou Visual Studio.

Seguindo o vídeo de Tim Corey, você poderá começar a usar os painéis do Spectre.Console com confiança para criar experiências de console refinadas e ricas em dados, com cabeçalhos, temas personalizados e saída formatada de forma organizada — tudo isso sem sair do mundo do console.

Hero Worlddot related to Painéis de conteúdo e chamadas - Série Spectre Console
Hero Affiliate related to Painéis de conteúdo e chamadas - Série Spectre Console

Ganhe mais compartilhando o que você ama.

Você cria conteúdo para desenvolvedores que trabalham com .NET, C#, Java, Python ou Node.js? Transforme sua expertise em renda extra!

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim