IRONSOFTWAREHOME

Kolory i style oraz możliwość ponownego użycia - seria Spectre Console

Colors and Styles and Reusability - Spectre Console Series

Tim Corey

9m 57s

Spectre Console to potężny pakiet NuGet dla .NET, który pozwala deweloperom przekształcać proste aplikacje konsolowe w bogate wizualnie doświadczenia. Łącząc kolory Spectre Console, dekoracje tekstu i wielokrotne użycie stylów, można podnieść zwykłe wyjście konsoli do czegoś informacyjnego i dopracowanego.

W swoim wideo "Colors and Styles and Reusability – Spectre Console Series" Tim Corey dokładnie wyjaśnia, jak to zrobić. W tym artykułe omówimy te same punkty, które porusza Tim, wskazując znaczniki czasu, abyście mogli oglądać film równolegle. To świetny sposób, aby zrozumieć, jak tworzyć i dostosowywać kolory, klasę stylu, a nawet nowy styl do wielokrotnego użytku.

Wprowadzenie do formatowania konsoli Spectre

W 0:00 Tim wyjaśnia, że Spectre Console "pozwala przekształcić aplikacje konsolowe w atrakcyjne wizualnie i bogate w informacje aplikacje". Zaznacza, że ta seria dzieli bibliotekę na małe części, dzięki czemu programiści mogą skupić się na jednej funkcji na raz.

W opisie wskazuje link do kodu źródłowego i zaprasza użytkowników do subskrypcji swojego kanału. Ta lekcja skupia się na tym, jak ustawić i zwrócić sformatowany tekst w wyjściu konsoli oraz jak sprawić, by formaty te były ponownie wykorzystywane w całym programie.

Korzystanie z Inline Markup i MarkupLine

W 0:36 Tim zaczyna od zademonstrowania metod AnsiConsole.MarkupLine i AnsiConsole.Markup. Metody te umożliwiają osadzanie kolorów i ozdobników bezpośrednio w reprezentacji ciągu znaków.

Jak wyjaśnia Tim w 0:51, Markup nie wstawia automatycznie nowego wiersza, podczas gdy MarkupLine to robi — "To trochę jak Console.Write w porównaniu z WriteLine". Ta różnica ma znaczenie, gdy chcesz wyświetlić wiele elementów lub listę w osobnych wierszach.

Wpisuje [red]To jest znacznik wbudowany[/] i uruchamia go, aby wyświetlić czerwony ciąg znaków. Następnie, o 1:38, demonstruje kolory pierwszego planu i tła — "czerwony na białym" — aby użytkownik mógł zobaczyć czerwony tekst na białym tle. O 2:05 dodaje pogrubienie jako element dekoracyjny.

Tim zauważa w 2:18, że znaczniki wbudowane są szybkie i łatwe w przypadku niewielkich działań, ale "nie sprawdzają się zbyt dobrze w pozostałych przypadkach", gdy potrzebny jest bardziej ustrukturyzowany lub wielokrotnego użytku styl w różnych funkcjach.

Tworzenie klasy stylu predefiniowanego

O 2:32 Tim pokazuje, jak utworzyć nową instancję klasy stylu do ponownego wykorzystania. Pisze:

var dangerStyle = new Style(
    foreground: Color.Red,
    background: Color.White,
    decoration: Decoration.Bold);

W tym miejscu Tim przypisuje zmienną o nazwie dangerStyle, która zawiera nowy styl z czerwonym pierwszym planem, białym tłem i pogrubioną czcionką. W 3:26 zauważa również, że nie trzeba wypełniać każdego argumentu — można wybrać tylko foreground lub tylko decoration, w zależności od potrzeb.

To podejście oparte na klasach umożliwia aktualizację stylów w jednym miejscu i spójne stosowanie ich wszędzie tam, gdzie renderowany jest tekst, zamiast powtarzania tagów znaczników.

Stosowanie stylów z nowym znacznikiem

O 3:48 Tim pokazuje, jak zastosować ten styl. Ponieważ AnsiConsole.WriteLine nie akceptuje stylów bezpośrednio, należy użyć AnsiConsole.Write z nowym obiektem znaczników:

AnsiConsole.Write(
    new Markup("Danger text from style", dangerStyle));

O 4:08 wyjaśnia, że WriteLine przyjmuje tylko ciągi znaków lub typy proste, ale Write ma przeciążenie, które akceptuje obiekt IRenderable. Dlatego przekazujesz swój styl do nowego znacznika, a następnie go zapisujesz.

Tim zauważa w 4:45, że ta składnia wymaga "trochę więcej pracy", ale jest to oficjalny sposób wyświetlania tekstu sformatowanego. Sugeruje nawet stworzenie własnej metody, aby to uprościć, jeśli często to robisz.

Obsługa znaków końca linii i pozycjonowanie kursora

Po uruchomieniu kodu Tim zwraca uwagę w 5:44, że kursor znajduje się w tym samym wierszu co tekst sformatowany. Dzieje się tak, ponieważ Write nie dodaje nowego wiersza. O 6:07 pokazuje, jak to naprawić, dodając \n wewnątrz ciągu znaków, co przesuwa kursor w dół.

Ta mała sztuczka gwarantuje, że wynik będzie zgodny z oczekiwaniami — jest to ważne podczas tworzenia większych aplikacji konsolowych, w których dane wprowadzane przez użytkownika pojawiają się po stylizowanym monicie.

Dodawanie wielu dekoracji

Następnie Tim pokazuje, jak łączyć dekoracje. O 6:27 mówi: "A co, jeśli chcesz zastosować więcej niż jedną dekorację? Na przykład: "Chcę również zastosować kursywę". Można to zrobić, używając pojedynczego znaku pionowej kreski do oddzielenia elementów dekoracyjnych.

Pokazuje, że można wybierać spośród długiej listy formatowań — pogrubienie, kursywa, przekreślenie, podkreślenie, przyciemnienie, odwrócenie, miganie — a nawet wspomina o obsłudze Windows PowerShell i Windows Terminal w 7:05. Obecnie powolne i szybkie miganie wyglądają tak samo w Windows Terminal.

O 7:29 uruchamia kod ponownie i pokazuje, że oprócz pogrubienia zastosowano również styl kursywy. "Możesz je dowolnie łączyć i dopasowywać" – mówi Tim w 7:49, tworząc style, które można stosować wielokrotnie.

Jest to potężna funkcja, gdy chcesz wyróżnić błędy na czerwono, komunikaty o powodzeniu na zielono, ostrzeżenia na żółto lub niestandardowe etykiety na niebiesko, fioletowo, orchideowo, a nawet bordowo — Spectre Console obsługuje pełny zestaw kolorów RGB.

Łączenie stylów wbudowanych i predefiniowanych

O godz. 8:02 Tim pokazuje, jak łączyć polecenia writes i writes o różnych stylach. Można wywołać AnsiConsole.Write wielokrotnie — najpierw z tekstem o określonym stylu, a następnie z tekstem bez stylu lub o innym stylu — aby wyróżnić tylko część wiersza. Pokazuje on:

AnsiConsole.Write(new Markup("Danger text", dangerStyle));
AnsiConsole.WriteLine(" and more");

Jak wyjaśnia Tim w 8:37, właśnie dlatego używa się Write zamiast WriteLine: może chcesz zaznaczyć tylko część tekstu, zanim wrócisz do normalnego stylu.

Ta funkcja zapewnia elastyczny sposób tworzenia złożonych wyników — na przykład tabeli danych, paska postępu dla długotrwałych zadań lub panelu z wieloma kolumnami — oraz stosowania stylów tylko do określonych elementów lub etykiet.

Podsumowanie – dostępne opcje

O 9:01 Tim podsumowuje dostępne opcje:

  • Używaj stylów wbudowanych z [color]text[/] oraz Markup lub MarkupLine do szybkiego formatowania.

  • Można też stworzyć nowy styl za pomocą new Style() i zastosować go do obiektów Markup podczas wywołania AnsiConsole.Write.

W 9:26 Tim zachęca widzów, aby "wypróbowali je z różnymi kolorami, tłem, dekoracjami i wszystkim innym". Obejmuje to tworzenie nowych tabel ze stylizowanymi nagłówkami, dodawanie paska postępu, który aktualizuje się podczas przetwarzania plików lub tablic elementów, a nawet konwersję danych JSON na stylizowany wygląd.

O 9:33 kończy, dziękując widzom i przypominając im, że nazywa się Tim Corey. Seria ta opiera się na bibliotece Spectre Console stworzonej przez Patrika Svenssona przy udziale programistów takich jak Phil Scott, a filmy Tima pomogą Ci szybko opanować jej funkcje.

Wnioski

Film Tima Coreya wyraźnie pokazuje, w jaki sposób Spectre Console przekształca zwykłe aplikacje konsolowe w atrakcyjne wizualnie rozwiązania. Od znaczników wbudowanych po w pełni ponownie wykorzystywane klasy stylów, autor krok po kroku wyjaśnia, jak kontrolować kolory pierwszego planu i tła, dekoracje tekstu oraz położenie kursora.

Jeśli będziesz postępować zgodnie z przykładami Tima podanymi w powyższych znacznikach czasu, w mgnieniu oka będziesz w stanie dodać profesjonalnie wyglądające style do swoich aplikacji konsolowych — bez zgadywania, jaka jest składnia. A kiedy już wiesz, jak przypisywać zmienne, dodawać dekoracje i renderować tekst stylizowany, możesz z łatwością wykorzystać te umiejętności do tworzenia tabel, paneli, pasków postępu i innych funkcji oferowanych przez Spectre Console.

Jak mówi Tim: "Wypróbuj je… i zobacz, co Ci się spodoba".

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!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta