응 아니야




오늘은 색변경에 대해서 알아보도록 하겠습니다. 색은 크게 두가지로 나뉩니다. 배경색인 backcolor, 글씨색인 forecolor 로요.

색은 요소의 옵션에서도 바꿔줄 수 있지만, 프로그램이 구동되고 있는 상황에서는 속성에서 바꿔줄 수 없습니다.



라벨(레이블)의 글씨색만 바꿔보겠습니다. 텍스트박스의 숫자를 바꿔도 색깔이 바뀌고, 호리존탈스크롤을 움직여도 색깔이 바뀝니다.



전체 소스는 이러한데, 설명하자면 이렇습니다. 일단 컴퓨터는 RGB라고 불리는 색상코드를 따릅니다. RED(빨강), GREEN(초록), BLUE(파랑)의 앞글자만 딴 단어죠.

0부터 255까지 256개의 숫자 3가지를 조합해 1천만개 이상의 색깔을 만들어냅니다. 인터넷을 돌아다니다 보면 #000000 #FFFFFF 이런걸 가끔 보게됩니다. 이게바로 rgb 코드표인데, 10진수 숫자를 16진수로 표기했을때 저렇게 나옵니다. #FF(255)FF(255)FF(255)2자리씩 끊어서 rgb를 말하죠.


비주얼베이직에서는 rgb(0, 0, 0)의 방식을 따르는데 여기서 숫자를 미리 정해놓고 프로그램을 실행하면 바꿀 수 없으니 사용자의 입맛에 맞는 색깔을 구현할 방법으로 직접 숫자입력과 스크롤방식을 사용했습니다.


rgb는 숫자나 변수에 담긴 숫자를 인식하기 때문에 미리 텍스트박스에 0을 넣습니다. 최대치를 255로 설정하기 때문에 최대로 쓸 숫자는 오타를 대비해 3자리까지입니다. 3개의 각 스크롤의 최소값(min)과 최대값(max)는 0과 255입니다.


HScroll1_Change()는 호리존탈스크롤1번의 value가 바뀌었을때를 말합니다. 이때 텍스트박스 1번의 텍스트에 호리존탈스크롤1번의 value를 대입합니다. 사용자의 입맛대로 실시간으로 바뀌죠. 최소, 최대값을 미리 설정해뒀으니 스크롤을 아무리 움직여봐야 0~255 숫자만 나타나게 됩니다. 이때 라벨의 색깔은 각 스크롤의 값에 대입합니다. 마찬가지로 2, 3번 스크롤도 숫자만 바꿔서 똑같이 해줍니다.


Text1_Change()는 텍스트박스1번의 value가 바뀌었을때를 말합니다. 사용자가 뭔가를 직접 입력하거나, 다른 요소에 의해 그 값이 바뀌었을때 작동합니다. 이때 텍스트박스1번의 글씨색 중 R 부분만 호리존탈 스크롤 1번의 값에 대입합니다. 나머지는 0으로 처리합니다. 마찬가지로 2, 3번 박스도 G, B 위치와 숫자만 바꿔서 똑같이 해줍니다.


이렇게 해놓고 프로그램을 실행시켜보면 텍스트박스에 숫자를 써넣거나, 스크롤을 움직였을때 값에 맞게 라벨의 색깔이 바뀌게 됩니다. 다만 조건문을 달아두지 않았기 때문에 0 미만, 255초과의 숫자를 쓰거나 숫자 이외의 값을 직접 입력하면 프로그램이 오류를 뱉어대니, 숫자만 넣으시기 바랍니다. 다른 사람에게 배포할 경우 이렇게 허술하게 만들어 배포하면 안되겠죠.. ^^?

공유하기

facebook twitter kakaoTalk kakaostory naver band