为什么我的代码使用TransparentBlt,什么都不显示呢?
如题,很简单的代码。
类CBitmapWnd是从CWnd继承过来的一个控件。
- C/C++ code
void CBitmapWnd::OnPaint(){ CPaintDC dc(this); BITMAP bm; m_FootBallBitmap.GetBitmap(&bm); int nWidth = bm.bmWidth; int nHeight = bm.bmHeight; COLORREF crMask = RGB(0xff,0xff,0xff); CDC ImageDC; ImageDC.CreateCompatibleDC(&dc); CBitmap *pOldImageBMP = ImageDC.SelectObject(&m_FootBallBitmap); ::TransparentBlt(dc.m_hDC,50,40,nWidth,nHeight,ImageDC.m_hDC,0,0,nWidth,nHeight,crMask); ImageDC.SelectObject(pOldImageBMP);}[解决办法]
在我使用TransparentBlt函数的时候,也发现了这个问题,用BitBlt可以显示,TransparentBlt就不能。
后经过测试,发现是TransparentBlt函数第9个和第10个参数的问题,
即nWidthSrc 和nHeightSrc这两个参数
这两个参数必须小于或等于位图的实际宽度和高度,否则此函数会调用失败,
在使用中要特别注意。