검색어 '비트맵'에 대한 1 개의 검색 결과

  1. 2009/12/14 MFC 비트맵 투명배경 적용 by dhappy (10)

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 이 작성.