نمایش نتایج 1 تا 4 از 4

نام تاپیک: تغییر رنگ یه قسمت متن

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1388
    پست
    30

    تغییر رنگ یه قسمت متن

    سلام دوباره به همه
    میخواستم ببینم برای تغییر رنگ یه قسمت از متن هم دستوری وجود داره؟
    البته دستور system("color") رو بلدم , میخوام فقط رنگ یه قسمت تغییر کنه , نه تمام متن

  2. #2

    نقل قول: تغییر رنگ یه قسمت متن

    شما اگر از system استفاده کنید دریافت رنگ قبلی سخت می شود، پس از توابع GetConsoleScreenBufferInfo برای دریافت اطلاعات رنگ و SetConsoleTextAttribute برای وارد کردن آن ها استفاده کنید:

    HANDLE hStdout, hStdin;
    CONSOLE_SCREEN_BUFFER_INFO scrInfo;

    hStdin = GetStdHandle(STD_INPUT_HANDLE);
    hStdout = GetStdHandle(STD_OUTPUT_HANDLE);

    GetConsoleScreenBufferInfo(hStdout, &scrInfo)) ;
    WORD OldColor = scrInfo.wAttributes; // get current color

    SetConsoleTextAttribute(hStdout, FOREGROUND_RED | FOREGROUND_INTENSITY);

    //--
    // use color here
    //--

    SetConsoleTextAttribute(hStdout, wOldColorAttrs);

    - در پایان هر وقت خواستید به رنگ قبلی برگدانید همان خط آخر را فراخوانی می کنیم.

    - در تابع سایر فلگ ها مانند FOREGROUND_GREEN و .. غیره وجود دارد.پس اگر می خواهید یک تست انجام دهید تا تمام رنگ ها را مشاهده کنید، در پارامتر دوم SetConsoleTextAttribute فقط عدد 1 تا 16 را فراخوانی کنید و یک نوشته بنویسید تا 16 رنگ را ببینید.

    - ضمنا دقت کنید، هر رنگ دلخواه امکان پذیر نیست، تنها 16 رنگ.

  3. #3

    نقل قول: تغییر رنگ یه قسمت متن

    ببخشید می خواستم ببینم هیچ راهی نداره که تو کنسول بیشتر از 16 رنگ استفاده کرد.تو قسمت properties کنسول میشه color value رو دستی تغییر داد می خواستم ببینم با کد هم میشه تغییرشون داد یا نه؟

  4. #4

    نقل قول: تغییر رنگ یه قسمت متن

    من براي اين كار از آدرس هاي حافظ استفاده مي كنم.
    مد متن در حافظه از آدرس b8000000 شروع مي شه كه يك بايت براي كاراكتر و يك بايت برايرنگ اونه
    با يك تابع مي توني متن مورد نظرتوپيدا كني و با تابعي ديگه رنگ اونو عوض كني كه هردوش سادن.
    واسه اين كار نياز به يه اشاره گر به حافظه داري كه از نوع كاراكتر بايد باشه وبه صورت اوليه هم بهش آدرس بدي
    register far char *p =(char far *)0xb8000000
    اين به اولين كاراكتر سمت چپ بالا اشاره مي كنه .آدرس بعدي يعني b8000001 رنگه اين كاراكتره
    همين طور تا آخرين كاراكتر موجوددر صفحه
    توجه كنيدكه هر صفحه 80*20

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •