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, // 这两个参数必须小于或等于位图的实际宽度和高度 RGB(0,0,0)); // 设置黑色为透明色 memDC.SelectObject(oldBmp); } 在我使用TransparentBlt函数的时候,发现了这个问题,用BitBlt可以显示,TransparentBlt就不能。 后经过测试,发现是TransparentBlt函数第9个和第10个参数的问题, 即nWidthSrc 和nHeightSrc这两个参数 这两个参数必须小于或等于位图的