본문 바로가기
Study/MFC

그라데이션 배경색 입히기

by 뿡뿡대마왕 2015. 7. 7.
반응형


다이얼로그 배경에 그라데이션으로 배경색을 입혀보자


OnPaint() 함수에다가 처리하면 된다.


void XXXXX::OnPaint()

{

    // 사각형 그라데이션 그리기

    TRIVERTEX vert[2];

    GRADIENT_RECT rect;

    CRect rc;

   GetClientRect(&rc);


    // 그라데이션의 시작좌표를 명시한다.

    vert[0].x      = 0;

    vert[0].y      = 0;

 

    // 그라데이션의 시작색상을 명시한다.

    vert[0].Red    = 0xF200;

    vert[0].Green  = 0xF200;

    vert[0].Blue   = 0xF200;

    vert[0].Alpha  = 0xF200;

     

    // 그라데이션의 끝좌표를 명시한다.

   vert[1].x      = rc.right;

   vert[1].y      = rc.bottom;

 

    // 그라데이션의 끝색상를 명시한다.

    vert[1].Red    = 0xF900;

    vert[1].Green  = 0xF900;

    vert[1].Blue   = 0xF900;

    vert[1].Alpha  = 0xF900;

     

    rect.UpperLeft  = 0;

    rect.LowerRight = 1;

 

    // 가로 방향의 시작지점부터 중앙지점까지 그라데이션 효과를 준다.

    GradientFill(dc.m_hDC, vert, 2, &rect, 1, GRADIENT_FILL_RECT_V);


}


TRIVERTEX 의 값에 색상을 넣을때 우찌 넣어야 하냐?

예를들어 RGB(255,255,255)면

255를 16진수로 변경하면 0xff 죠~ 그럼 0xFF00 과 같은 값으로

150이라고 하면 이놈을 16진수로 변경하면 0x96, 이걸 TRIVERTEX 구조체에 값을 넣으러면 0x9600


typedef struct _TRIVERTEX

{

    LONG    x;

    LONG    y;

    COLOR16 Red;

    COLOR16 Green;

    COLOR16 Blue;

    COLOR16 Alpha;

}TRIVERTEX,*PTRIVERTEX,*LPTRIVERTEX;


구조체가 위에처럼 생겼다.

16비트니까. 저렇게 값이 되는것이고

찾아보면 자동변환해주는 매크로도 있는거 같습니다~~ㅎ


정보는 공유되어야 한다 쭈욱~~


반응형

댓글