2009. 7. 6. 12:31

[WinAPI] BMP 파일에서 특정색상을 투명하게 출력하기

BOOL TransparentBlt(
  HDC
hdcDest,                                 //그려질 영역의 DC 핸들.
  int nXOriginDest,                              //그려질영역의 x 좌표.
  int nYOriginDest,                              //그려질영역의 y 좌표.
  int nWidthDest,                               //그려질 영역의 넓이
  int hHeightDest,                              //그려질 영역의 높이
  HDC hdcSrc,                                  //그릴 소스 DC 핸들  
  int nXOriginSrc,                               //그릴 소스의 x 좌표.
  int nYOriginSrc,                               //그릴 소스의 y 좌표.
  int nWidthSrc,                                 //그릴 소스의 넓이
  int nHeightSrc,                                //그릴 소스의 높이.
  UINT crTransparent                                 //비트맵에서 제외할 색상.RGB( ?, ?, ? )
);

 

HEADER :  #include <wingdi.h>

LINK       : Msimg32.lib , Msimg32.dll

Return Values

If the function succeeds, the return value is TRUE.

If the function fails, the return value is FALSE

 

  CDC* pDC = CDC::FromHandle( lpDrawItemStruct->hDC );
  CDC MemDC;

  MemDC.CreateCompatibleDC( pDC );

  CRect rcItem( &(lpDrawItemStruct->rcItem) );

  CBitmap bmpIcon;

  bmpIcon.LoadBitmap( IDB_YAHOO_COMBO_IMAGE );

  CBitmap* pOldbmp = (CBitmap*)MemDC.SelectObject( &bmpIcon );

  ::TransparentBlt( pDC->m_hDC,
   rcItem.left, rcItem.top, 16, 16,
   MemDC.m_hDC, 0, 0, 16, 16,
   RGB( 255, 255, 255 ) );


Trackback 0 Comment 0