반응형
텍스트에 컬러문자 출력하기 |
여기서는 비디오메모리 구조와 색상바이트 구조에 대한 설명을 실었다.
그리고, 다음의 color()함수는 텍스트 모드에서 컬러텍스트를 출력하는 함수입니다.
노란색 문자열을 쉽게 얻을 수 있다
가지고 있으니, 그중 반은 문자열 내용이고 나머지 반은 색상에 관한 정보를
가지고 있다. 따라서 80*25의 화면을 사용한다면 컴퓨터가 필요로 하는 메모리 양은
80*25*2 Byte이며, 이때 비디오 메모리 구조는 처음 1 Byte에 문자를 넣고,
그 다음 1 Byte에 색상을 집어넣는 식으로 되어 있다. 이 상태에서 printf()나
puts() 함수를 사용하면 컬러가 출력되지 않는다. 따라서 원하는 색상의 컬러를
출력하기 위해서는 cprintf()와 cputs()를 사용해야 한다. 이때 주의할 점은 cprintf()나
cputs()는 '\n' 만으로 줄바꾸기가 되지 않으므로 '\r\n'을 사용해야 한다는 점이다
BLINK를 추가하면 된다. color(BLINK+YELLOW, BLUE); 처럼 쓰면 된다.
단, BLINK는 글자의 색부분에 붙여야만 한다.
BLINK는 conio.h 에 #define BLINK 128 로 정의되어 있고,
128을 이진수로 고치면 1000 0000 이므로 128을 더하면 blink bit를
on 시키게 된다. 지금 쓰이고 있는 색상을 알아내기 위해서는 ATTR이라는
새로운 변수를 만들어 쓰면 될 것이다.
깜박임 바이트 - blink byte - 가 on 되므로 반짝이는 색상으로 변환된다
그리고, 다음의 color()함수는 텍스트 모드에서 컬러텍스트를 출력하는 함수입니다.
void color(char fore, char back) /* 텍스트 모드에서 전경색과 배경색을 한꺼번에 지정 */ /* textcolor(), textbackground() 를 통합 개선한 것 */ { char ATTR; /* ATTR을 공용변수로 외부선언하면 다른 여러곳에서 사용가능 */ ATTR=(back*0x10)+fore; textattr(ATTR); }위의 소스에서 보았듯이 다음과 같이 사용하면 텍스트 모드에서 검은색 바탕에
노란색 문자열을 쉽게 얻을 수 있다
color(YELLOW, BLACK); cprintf("Misty Blue");"Misty Blue" 는 정확히 10자이다. 하지만 비디오 메모리 속의 내용은20자를
가지고 있으니, 그중 반은 문자열 내용이고 나머지 반은 색상에 관한 정보를
가지고 있다. 따라서 80*25의 화면을 사용한다면 컴퓨터가 필요로 하는 메모리 양은
80*25*2 Byte이며, 이때 비디오 메모리 구조는 처음 1 Byte에 문자를 넣고,
그 다음 1 Byte에 색상을 집어넣는 식으로 되어 있다. 이 상태에서 printf()나
puts() 함수를 사용하면 컬러가 출력되지 않는다. 따라서 원하는 색상의 컬러를
출력하기 위해서는 cprintf()와 cputs()를 사용해야 한다. 이때 주의할 점은 cprintf()나
cputs()는 '\n' 만으로 줄바꾸기가 되지 않으므로 '\r\n'을 사용해야 한다는 점이다
#include위의 소스를 아래와 같이 변환한다void main() { clrscr(); textcolor(YELLOW); textbackground(BLUE); cprintf("Misty Blue"); }
#include위의 예제에서 보다시피 원하는 색상을 써주기만 하면 반짝거리게 하고 싶을 때에는void color(char fore, char back); void main(){ color(YELLOW, BLUE); cprintf("Misty Blue"); } void color(char fore, char back){ textattr((back*0x10)+fore); }
BLINK를 추가하면 된다. color(BLINK+YELLOW, BLUE); 처럼 쓰면 된다.
단, BLINK는 글자의 색부분에 붙여야만 한다.
BLINK는 conio.h 에 #define BLINK 128 로 정의되어 있고,
128을 이진수로 고치면 1000 0000 이므로 128을 더하면 blink bit를
on 시키게 된다. 지금 쓰이고 있는 색상을 알아내기 위해서는 ATTR이라는
새로운 변수를 만들어 쓰면 될 것이다.
* 영문색상명은 conio.h 나 graphics.h 참고
위의 표에서 실제값 0~7 번까지는 글자색과 배경색으로 모두 사용되는 색상이고,
깜박임 바이트 - blink byte - 가 on 되므로 반짝이는 색상으로 변환된다
반응형
'기타 언어 > C# & MFC' 카테고리의 다른 글
MFC VC2010 링크에러 fatal error LNK1104 (0) | 2013.04.05 |
---|---|
CEdit 박스에 Enter 키를 눌렀을때 줄바꿈 적용 (0) | 2011.03.14 |
MFC VC++ 탭 순서 변경하기 (2) | 2011.03.11 |
컬러비트 배경색 16 쓰기 (1) | 2010.08.31 |
비디오 메모리에 직접엑세스 하는 방법 (3) | 2010.08.31 |
메모리 내용을 읽어내어 키보드 상태 알아내기 - 4가지 방법 (0) | 2010.08.31 |
인터럽트와 레지스터 (1) | 2010.08.31 |
텍스트 화면의 스크롤 (0) | 2010.08.31 |