void CChildView::OnPaint() { CPaintDC dc(this);
CBitmap bmp, *oldBmp; BITMAP bm; bmp.LoadBitmap(IDB_BITMAP1); // 從資源加載位圖 bmp.GetObject(sizeof BITMAP, &bm); // 獲取位圖的寬高等信息 CDC memDC; memDC.CreateCompatibleDC(&dc); oldBmp = memDC.SelectObject(&bmp);
TransparentBlt( dc.m_hDC, 0,0, bm.bmWidth, bm.bmHeight, memDC.m_hDC, 0,0, bm.bmWidth, bm.bmHeight, // 這兩個(gè)參數(shù)必須小于或等于位圖的實(shí)際寬度和高度 RGB(0,0,0)); // 設(shè)置黑色為透明色
memDC.SelectObject(oldBmp); } 在我使用TransparentBlt函數(shù)的時(shí)候,,發(fā)現(xiàn)了這個(gè)問(wèn)題,,用BitBlt可以顯示,TransparentBlt就不能,。
后經(jīng)過(guò)測(cè)試,,發(fā)現(xiàn)是TransparentBlt函數(shù)第9個(gè)和第10個(gè)參數(shù)的問(wèn)題,
即nWidthSrc 和nHeightSrc這兩個(gè)參數(shù)
這兩個(gè)參數(shù)必須小于或等于位圖的實(shí)際寬度和高度,,否則此函數(shù)會(huì)調(diào)用失敗,,
在使用中要特別注意。 使用此函數(shù)須加載msimg32.lib庫(kù) #pragma comment( lib, "msimg32.lib" )
|