复制另一个HBITMAP的位图

我想写一个类来包装位图function在我的程序中。

一个有用的function是从另一个位图句柄复制位图。 我有点卡住了:

void operator=( MyBitmapType & bmp ) { HDC dcMem; HDC dcSource; if( m_hBitmap != bmp.Handle() ) { if( m_hBitmap ) this->DisposeOf(); // copy the bitmap header from the source bitmap GetObject( bmp.Handle(), sizeof(BITMAP), (LPVOID)&m_bmpHeader ); // Create a compatible bitmap dcMem = CreateCompatibleDC( NULL ); m_hBitmap = CreateCompatibleBitmap( dcMem, m_bmpHeader.bmWidth, m_bmpHeader.bmHeight ); // copy bitmap data BitBlt( dcMem, 0, 0, bmp.Header().bmWidth, bmp.Header().bmHeight, dcSource, 0, 0, SRCCOPY ); } } 

这段代码缺less一件事:如果我所有的源位图是一个句柄(例如一个HBITMAP?),如何获得HDC到源位图?

你可以在上面的代码中看到,我在BitBlt()调用中使用了“dcSource”。 但我不知道如何从源位图的句柄得到这个dcSource(bmp.Handle()返回源位图句柄)

Solutions Collecting From Web of "复制另一个HBITMAP的位图"

你不能 – 根本不可能将源位图选入DC中,即使这样你也无法找到DC。

要做你的副本,你可能想要使用像这样的东西:

 dcSrc = CreateCompatibleDC(NULL); SelectObject(dcSrc, bmp); 

然后你可以从源到目标DC。

为我工作:

 // hBmp is a HBITMAP HBITMAP hBmpCopy= (HBITMAP) CopyImage(hBmp, IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE);