画像を透過色で透過する

twhs2008-01-29


右の画像の赤色の部分を透過したい
下記はMFCでのやり方
m_cBitmapはCBitmap型
IDB_BMP_IMGはイメージのリソースID
赤色で透過したいのでRGB(255, 0, 0)


OnInitDlgで

m_cBitmap.LoadBitmap(IDB_BMP_IMG);

OnPaintで

CPaintDC dc(this);
BITMAP bmp;
m_cBitmap.GetBitmap(&bmp);

CDC cDC;
cDC.CreateCompatibleDC(&dc);
CBitmap *pOldBitmap = cDC.SelectObject(&m_cBitmap);

dc.TransparentBlt(0, 0, bmp.bmWidth, bmp.bmHeight,
		&cDC, 0, 0, bmp.bmWidth, bmp.bmHeight, RGB(255, 0, 0));
		
if (pOldBitmap) {
	cDC.SelectObject(pOldBitmap);
}