آموزش تغییر رنگ متن کنسول در زبان C

change text color in c 7999 تصویر

آموزش تغییر رنگ متن کنسول در زبان C

در این بخش آموزش تغییر رنگ متن کنسول در زبان C را بررسی خواهیم کرد که یکی از مواردی است که خیلی در انجمن برنامه نویسی و گروه ها پرسیده می شود. در ادامه می توانید توضیحات و سورس کد را مشاهده کنید.

توضیحات

برای اینکه بتوانیم رنگ متنی که در کنسول (CMD) چاپ می شود را تغییر دهیم، باید از API که خود ویندوز در اختیار ما قرار داده است، استفاده کنیم. این API ها در هدر فایل windows.h قرار دارند. بنابراین برای انجام اینکار لازم است این هدر فایل را در برنامه include کنید.

رنگ ها

در جدول زیر رنگ هایی  که در این روش می توان از آن ها استفاده کرد را مشاهده می کنید.

نام رنگ

کد رنگ
سیاه ۰
آبی ۱
سبز ۲
آبی دریایی ۳
قرمز ۴
بنفش ۵
زرد ۶
سفید ۷
خاکستری ۸
آبی روشن ۹
سبز روشن ۱۰
آبی دریایی روشن ۱۱
قرمز روشن ۱۲
بنفش روشن ۱۳
زرد روشن ۱۴
سفید روشن ۱۵

برای ادامه کار یک پروژه ایجاد کنید از نوع C و کنسول ما در این آموزش از نرم افزار Code::Blocks استفاده کرده ایم. و هدر فایل های زیر را به فایل main.c اضافه کنید.

#include <stdio.h>
#include <windows.h>

سپس یک نوع شمارشی شامل رنگ های گفته شده در جدول بالا مثل نمونه زیر ایجاد کنید:

typedef enum
{
    BLACK = 0, BLUE = 1, GREEN = 2,
    AQUA = 3, RED = 4, PURPLE = 5,
    YELLOW = 6, WHITE = 7, GRAY = 8, 
    LIGHT_BLUE = 9, LIGHT_GREEN = 10,
    LIGHT_AQUA = 11, LIGHT_RED = 12, 
    LIGHT_PURPLE = 13, LIGHT_YELLOW = 14,
    LIGHT_WHITE = 15
} ConsoleColors;

برای راحتی کار برای برخی از موارد نام مستعار تنظیم میکنیم. این بخش اختیاری است و می توانید از همان نام های اصلی استفاده کنید.

typedef HANDLE Handle;
typedef CONSOLE_SCREEN_BUFFER_INFO BufferInfo;
typedef WORD Word;

تابعی که متن رنگ کنسول را تغییر می دهد:

short setTextColor(const ConsoleColors foreground)
{
    Handle consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    BufferInfo bufferInfo;
    if(!GetConsoleScreenBufferInfo(consoleHandle, &bufferInfo))
        return 0;
    Word color = (bufferInfo.wAttributes & 0xF0) + (foreground & 0x0F);
    SetConsoleTextAttribute(consoleHandle, color);
    return 1;
}

این تابع یک ورودی از نوع ConsoleColors که در بالا تعریف کردیم، میگیرد و آن را به عنوان رنگ متن کنسول تنظیم میکند. اگر عملیات تنظیم رنگ موفق بود، true و در غیر این صورت false باز میگرداند.

حال در تابع اصلی (main) می توانید از تابع فوق به شکل زیر استفاده کنید:

int main()
{
    setTextColor(LIGHT_BLUE);
    printf("Hello ");
    setTextColor(LIGHT_GREEN);
    printf("World!\n");
    [...]

 کد فوق عبارت Hello را با رنگ آبی روشن و عبارت World! را با رنگ سبز روشن در خروجی چاپ می کند.

کد کامل

در زیر می توانید کد کامل پروژه را مشاهده کنید:

#include <stdio.h>
#include <windows.h>
typedef enum
{
    BLACK = 0, BLUE = 1, GREEN = 2,
    AQUA = 3, RED = 4, PURPLE = 5,
    YELLOW = 6, WHITE = 7, GRAY = 8, 
    LIGHT_BLUE = 9, LIGHT_GREEN = 10,
    LIGHT_AQUA = 11, LIGHT_RED = 12, 
    LIGHT_PURPLE = 13, LIGHT_YELLOW = 14,
    LIGHT_WHITE = 15
} ConsoleColors;
typedef HANDLE Handle;
typedef CONSOLE_SCREEN_BUFFER_INFO BufferInfo;
typedef WORD Word;
short setTextColor(const ConsoleColors foreground)
{
    Handle consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
    BufferInfo bufferInfo;
    if(!GetConsoleScreenBufferInfo(consoleHandle, &bufferInfo))
        return 0;
    Word color = (bufferInfo.wAttributes & 0xF0) + (foreground & 0x0F);
    SetConsoleTextAttribute(consoleHandle, color);
    return 1;
}
int main()
{
    setTextColor(LIGHT_BLUE);
    printf("Hello ");
    setTextColor(LIGHT_GREEN);
    printf("World!\n");
    setTextColor(LIGHT_YELLOW);
    printf("Source");
    setTextColor(LIGHT_PURPLE);
    printf("Sara");
    setTextColor(LIGHT_AQUA);
    printf(".");
    setTextColor(LIGHT_RED);
    printf("Com");
    setTextColor(WHITE);
    return 0;
}

خروجی:

change text color in c 7999 1 تصویر

نوشته آموزش تغییر رنگ متن کنسول در زبان C اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.

درباره نویسنده: administrator

ممکن است دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *