עבור לתוכן

מייקרוסופט ויזואל סי פלוס פלוס - איך כותבים בצבעים?

Featured Replies

פורסם

שלום לכולם. קיבלתי תרגיל לבנות מחלקת מלבן, שממומש באמצעות 2 נקודות (נקודה היא גם מחלקה שבניתי...).

בנוסף , למלבן יש מאפיין (נורש ממחלקה אחרת אבל לא חשוב...) - צבע !

הצלחתי לעשות הכל מלבד עניין הצבע. אני מדפיס מלבן יפה על המסך (תצוגת טקסט) עם מרחקים מתחילת המסך לפי 2 הקורדינטות של 2 הנקודות. אך אני לא יודע איך להדפיס את המלבן בצבע =/ הייתי רוצה לדעת האם יש דרך לשנות את הצבע הלבן הרגיל שבו מודפסים האותיות בחלון הדוס שמבצע את התוכניות שאני כותב בסי פלוס פלוס. תודה רבה מראש ולכולם, ירון.

פורסם

אפשר פשוט לכתוב VC++

אם תגיד באיזה פקודה אתה משתמש בשביל ליצור את הקווים אולי נוכל לעזור לך

קצת קשה לנחש מה אתה עושה

פורסם
  • מחבר

אפשר פשוט לכתוב VC++

אם תגיד באיזה פקודה אתה משתמש בשביל ליצור את הקווים אולי נוכל לעזור לך

קצת קשה לנחש מה אתה עושה

אני !לא! משרטט את הקווים. אני לא משתמש בשום ממשק גרפי. מלבן שנקודה אחת שלו היא 0,0 ונקודה שנייה שלו 5,5 יראה כך:

******

* *

* *

* *

* *

******

בוא נאמר שמאפיין המלבן - צבע = כחול. הייתי רוצה שהכוכביות ירשמו לי בכחול. איך?

פורסם
  • מחבר

הצלחתי להדפיס תווי אסקי בחלון דוס באותיות כמו שרציתי. לאלה מכם שמעוניינים לדעת איך (סי פלוס פלוס)

יוצרים משתנה מטיפוס HANDLE ומאתחלים אותו על פי הכתוב למטה. משתנה HANDLE הוא משתנה שאחראי בפועל על מאפייני המסך.


HANDLE OutputH = GetStdHandle(STD_OUTPUT_HANDLE)

למשתנה OUTPUTH נכנסו מאפייני המסך ויש לו גישה אליהם כרגע.

כעת לשינוי הצבעים:



// Method will change console text color by given parameter
void ChangeConsoleColor(const int Color, HANDLE OPHandler)
{
/* CHANGING TEXT COLOR */
/* I HAVE MODIFIED A BIT A FUNCTION FROM © 2000-2003 GameTutorials TO CHANGE TEXT COLOR */
switch (Color)
{
case RED : SetConsoleTextAttribute(OPHandler, FOREGROUND_RED | FOREGROUND_INTENSITY);
break;

case BLUE : SetConsoleTextAttribute(OPHandler, FOREGROUND_BLUE | FOREGROUND_INTENSITY);
break;

case GREEN : SetConsoleTextAttribute(OPHandler, FOREGROUND_GREEN| FOREGROUND_INTENSITY);
break;

case PURPLE: SetConsoleTextAttribute(OPHandler, FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY);
break;

case YELLOW: SetConsoleTextAttribute(OPHandler, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
break;

default: SetConsoleTextAttribute(OPHandler, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
break;
}
}

המממ הישור לשמאל לא עבד... לא נורא, עדיין מבינים טוףף מה נעשה פה....

הערה - כמובן ששמות הצבעים הוגדרו באופן הבא

#define WHITE 0

#define BLUE 1

#define GREEN 2

#define PURPLE 3

#define YELLOW 4

#define RED 5

פורסם

יותר פשוט לעשות את זה עם ANSI escape sequences. זה גם יותר תקני וגם תוכל לשלוט על הצבעים ברמת האות.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים