Programování v jazyce C - Barvy textu

C++ Základní konstrukce C Zdrojákoviště Programování v jazyce C - Barvy textu

Dnes si ukážeme, jak si "vyzdobit" naší aplikaci barvami textů.

Co budeme potřebovat?

Určitě nějakou knihovnu a právě proto si includneme hlavičkový soubor windows.h.

#include <windows.h>

Uděláme si funkci barvy.

void barvy(void);

Dále už k tvoření samotné funkce. Jak už jsem říkal, musíme mít naincludovaný hlavičkový soubor windows.h. Ukázka funkce.:

void barvy(void)
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
    FOREGROUND_GREEN);
}

FOREGROUND_IN­TENSITY je vlastně takové zesvětlení, FOREGROUND_GREEN je samozřejmě barva zelená. Nyní bude barva výrazně zelená skoro jako v matrixu. ^^ Pokud FG intensity dáme pryč vznikne nám barva tmavě zelená.

void barvy(void)
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
    FOREGROUND_GREEN); // tmavě zelená
}

A takto jdou míchat různé barvy například.:

void barvy(void)
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
    FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); // bílá
}
void barvy(void)
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0); // černá
}

A do kódu budeme psát už jen barvy();. Také můžeme dát všechny barvy do switche a tím získat funkci s proměnnou a nemusíme na každou barvu psát novou funkci.

void barvy(int);

void barvy(int barvy)
{
        switch(barvy)
        {
                case 1: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0);//černá
                break;
                case 2: SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),
                FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE); // bílá
                break;
        }
}

Nyní už můžeme psát do kódu následovně.:

barvy(1);
printf("black");
barvy(2);
printf("white");

 

Stáhnout

Staženo 382x (1.38 kB)
Aplikace je včetně zdrojových kódů v jazyce C

 

  Aktivity (3)

Článek pro vás napsal Зайчик
Avatar
Коммунизм для нашего будущего!

Jak se ti líbí článek?
Celkem (2 hlasů) :
4444 4


 


Miniatura
Následující článek
Rámeček

 

 

Komentáře

Avatar
expoox
Redaktor
Avatar
expoox:

Tieto veci si mohol dat radcej do neakeho komplexnejsieho clanku o WinAPI, ale pomohlo to :D diky

 
Odpovědět 1.3.2013 20:11
Avatar
mnauik
Člen
Avatar
mnauik:

#include <windows.h> mi hlasi chybu, windows.h pry neexistuje, dedukci jsem dosel k zaveru, ze to asi bude proto, ze nemam OS Windows, ale Linux. Existuje tedy nejaka ekvivalentni .h k windows.h, ktery by sel na Linux?

Odpovědět 18.4.2014 16:37
minusuj mě, ale zdůvodni to ;)
Avatar
cmaja
Člen
Avatar
cmaja:

Video je nefunkční, celkově mně připadá, že jazyk C tady skomírá. I když jazyk C není až tak úplně odepsaný, ještě se v nějakých aplikacích používá.

Odpovědět  +1 3.5.2014 10:55
"Jen dvě věci jsou nekonečné - vesmír a lidská hloupost. Tím prvním si ovšem nejsem tak jist" ALBERT EINSTEIN
Avatar
Insane Qurd
Redaktor
Avatar
Insane Qurd:

Jaký je rozdíl mezi tvou metodou a např. system("color 8b"); ?

Odpovědět 1.6.2014 18:35
It's impossible to say it's impossible.
Avatar
Odpovídá na Insane Qurd
Luboš Běhounek (Satik):

Pouziti system() je pomalejsi nez prime zavolani funkce.

Odpovědět  +1 1.6.2014 19:52
:)
Avatar
Člen
Člen
Avatar
Člen:

Škoda, že video už neexistuje...

Odpovědět 19.10.2014 15:41
...
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Člen
David Čápka:

Všechny články v této sekci jsou nyní přepracovávány, dočkáš se :)

Odpovědět  +1 19.10.2014 16:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.