티스토리 뷰

목차

    반응형

    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 변환 추출 방법

    반응형