티스토리 뷰
목차
MFC COLORREF에서 RGB Alpha 변환 추출 방법
WIN32 API에서 제공되는 것으로 3개의 색상 값이 사용됩니다. 각각은 8비트로 Red, Green, Blue 순이 되겠습니다.
MFC COLORREF RGB 추출 기초
Red
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Green
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Blue
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
따라서, Red, Green, Blue는 0 ~ 255까지의 값을 가질 수 있습니다. 내부적으론 하나의 결과 값을 위해 아래와 같이 결합합니다.
Color Value
23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Blue | Green | Red |
RGB 값을 이용하면 16만 개 이상의 색상을 사용할 수 있다는 의미이기도 합니다. (255 * 255 * 255 = 16,581,375)
컴퓨터 모니터엔 수평과 수직의 라인들이 존재하는데, 두 선이 교차하는 사이를 픽셀이라고 합니다. MS의 윈도우는 한 픽셀의 색상을 32비트로 판단합니다. 아래처럼 말이죠.
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | Blue | Green | Red |
맨 왼쪽의 바이트는 운영 체제 내부에서 사용하기 위한 용도로 예약된 상태이므로 초기엔 0으로 설정합니다. R, G, B 모두 0 값이라면 검은색, 모두 255 값이라면 흰색으로 표현됩니다.
아래는 RGB 값을 이용하여 COLORREF를 사용하는 간단한 예입니다.
1 2 3 4 | void CExoView::OnDraw(CDC* pDC) { COLORREF NewColor = RGB(255, 0, 255); } | cs |
사용될 색상의 값을 확인해 보려면, GetRValue(), GetGValue(), GetBValue() 매크로를 사용하면 됩니다.
1 2 3 | BYTE GetRValue(DWORD rgb); BYTE GetGValue(DWORD rgb); BYTE GetBValue(DWORD rgb); | cs |
MFC COLORREF에서 RGB Alpha 변환 추출 방법