본문 바로가기
C++ 200제/코딩 IT 정보

MFC COLORREF에서 RGB Alpha 변환 추출 방법

by vicddory 2017. 4. 27.

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


MFC COLORREF RGB Alpha

MFC RGB 추출

RGB 값 추축 COLORREF


따라서, 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비트로 판단합니다. 아래처럼 말이죠.


COLORREF에서 RGB 추출 - 두 선이 교차하는 사이가 픽셀



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(2550255);
}
cs


사용될 색상의 값을 확인해 보려면, GetRValue(), GetGValue(), GetBValue() 매크로를 사용하면 됩니다.


1
2
3
BYTE GetRValue(DWORD rgb);
BYTE GetGValue(DWORD rgb);
BYTE GetBValue(DWORD rgb);
cs


MFC COLORREF에서 RGB Alpha 변환 추출 방법

댓글