그라데이션 배경색 입히기
다이얼로그 배경에 그라데이션으로 배경색을 입혀보자
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비트니까. 저렇게 값이 되는것이고
찾아보면 자동변환해주는 매크로도 있는거 같습니다~~ㅎ
정보는 공유되어야 한다 쭈욱~~