Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: Pietrzuch
Biblioteki C++

Obsługa kolorów

[lekcja] Rozdział 5. Obsługa kolorów w konsoli.

Wstęp

Teraz nauczymy się obsługiwać kolory w konsolce. Jak zawsze zaczniemy od kodu:

C/C++
#include <ncurses.h>

int main()
{
    initscr(); //Start
    if( has_colors() == TRUE ) //1
    {
        start_color(); //2
        init_pair( 1, COLOR_RED, COLOR_BLACK ); //3
        attron( COLOR_PAIR( 1 ) ); //4
        printw( "Kolorowy napis. ;P" );
        attroff( COLOR_PAIR( 1 ) ); //Wyłączenie koloru tekstu
    }
    else
    {
        printw( "Twoja Konsolka nie obsluguje kolorow. :/ " );
    }
    getch();
    endwin(); //koniec
    return 0;
}

Tłumaczenie kodu

1. Bardzo ważna instrukcja, sprawdza czy konsola posiada obsługę kolorów, i zwraca wartość bool:

  • true - kiedy konsola posiada obsługę kolorów.
  • false - gdy konsola nie obsługuje kolorów.

2. Taką funkcją włączamy tryb 'kolorowy' do terminala.

3. Tu będzie nieco trudniej. Funkcja init_pair(1, COLOR_RED, COLOR_BLACK); określa do jakiego trybu przypisać jaki kolor czcionki, oraz jaki kolor tła, dla całej konsoli. Dokładniej:
init_pair(do jakiego trybu (zmiennej) wpisać odpowiednie parametry,kolor_czcionki,kolor_tla).

4. Jeżeli nie zrozumiałeś o co chodzi z tym zapisywaniem do trybu to teraz powinieneś to zrozumieć. Jak widzisz funkcję attron(COLOR_PAIR(1)) już znasz więc nie będzie problemu z jej zapamiętaniem, jednak co oznacza to COLOR_PAIR(1)? To oznacza właśnie do którego 'trybu' koloru ma się program odwołać. Czyli w nawiasie wpisujemy COLOR_PAIR wpisujemy liczbę, czyli 'tryb'. Dla lepszego zrozumienia o co mi chodzi, podam drugi przykład. Program tak samo będzie działał, jeżeli wpiszemy sobie zamiast:

C/C++
init_pair( 1, COLOR_RED, COLOR_BLACK );
attron( COLOR_PAIR( 1 ) );
to:
C/C++
init_pair( 2, COLOR_RED, COLOR_BLACK );
attron( COLOR_PAIR( 2 ) );

Mam nadzieję, że teraz już wiesz o co chodzi.

Zakończenie

Pamiętaj, że ustawianie kolorów odbywa się funkcją attron(), a więc to znaczy, że trzeba po sobie później to wyłączyć funkcją attroff().

Ok, to koniec na tą lekcję, na następnej nauczymy się wyświetlać tekst na przykład na środku ekranu.
Poprzedni dokument Następny dokument
Podkreślanie tekstu Wyświetlanie tekstu w danej części ekranu