MFC 비트맵에 투명 배경을 사용해본다

보통 picture control을 static 필드로 비트맵을 쓰는데 (!?!?)

투명 배경 사용을 위해 CStatic를 상속하는 클래스를 만들어본다

1. MFC클래스 생성-> 이름 넣고-> 생성 한다 (이름 예 : CCTransparentStatic )
2. 클래스 메시지 함수인 OnPaint()를 생성
3.  다음을 입력

void CMyStatic::OnPaint()
{
 CPaintDC dc(this); // device context for painting
 // TODO: Add your message handler code here

 HBITMAP old,bmp  = GetBitmap();
 BITMAP bminfo;
 CDC memDC;

 memDC.CreateCompatibleDC(&dc);
 old = (HBITMAP)::SelectObject(memDC.m_hDC,bmp);

 ::GetObject(bmp,sizeof(BITMAP),&bminfo);

 ::TransparentBlt(dc.m_hDC,0,0,bminfo.bmWidth,bminfo.bmHeight,memDC.m_hDC,0,0,bminfo.bmWidth,bminfo.bmHeight,RGB(255,255,255));

 ::SelectObject(memDC.m_hDC,old);
 memDC.DeleteDC();
 // Do not call CStatic::OnPaint() for painting messages
}

* 255.255.255로 함수 변수를 넘겼기 때문에 이미지 중 색이 하얀색(255.255.255)인 것은 투명처리된다

4. 이제 원래의 다이얼로그로 돌아가서 픽쳐컨트롤을 올리고 비트맵을 삽입한다
5. 컨트롤에 멤버변수를 만든다. (안만들어지면 컨트롤 ID를 기본인 IDB_STATIC말고 다른걸로 쓰면 된다)
6. 다이얼로그 헤더파일에 방금 만든 멤버 변수가 CStatic XXX 형태로 되어있는 것을
   방금 만든 클래스 타입으로 바꾼다. (ex CTransparentStatic XXX)

2009/12/14 16:09 2009/12/14 16:09
dhappy 이 작성.

Trackback URL : 이 글에는 트랙백을 보낼 수 없습니다

Trackback RSS : http://dhappy.net/rss/trackback/294

Trackback ATOM : http://dhappy.net/atom/trackback/294


« Prev : 1 : ... 214 : 215 : 216 : 217 : 218 : 219 : 220 : 221 : 222 : ... 413 : Next »