我想实现2幅图片的叠加,显示并能将其叠加位图保存下来。
源图片是Load进来后保存在m_hBitmap的vector容器里,图片1为m_hBitmap的第一个元素。当前DC上显示的是图片2。
通过下边这个程序,在屏幕上能显示出来叠加后的位图,可是保存下来的结果仍为图片1。
不知都问题出在哪里?图片1是24位的,图片2是32位的。
void CImagePView::OnLayerAdd()
{
CDC* pDC = GetDC();
HBITMAP  hTempBmp;
CDC dcImage;
CBitmap Bmp;
         Bmp.Attach(m_hBitmap.at(0)); CBitmap *pOldBmp, *pNewBmp;
dcImage.CreateCompatibleDC(pDC);
pOldBmp = dcImage.SelectObject(&Bmp);
pDC->BitBlt(0, 0, m_sizeCanvas.cx, m_sizeCanvas.cy, &dcImage, 0, 0, SRCPAINT); pNewBmp = dcImage.SelectObject(pOldBmp);
hTempBmp = (HBITMAP)pNewBmp->m_hObject;

m_hBitmap.push_back(hTempBmp);         //叠加位图的句柄存入vector容器m_hBitmap内
m_LayCurrent++;                       //m_hBitmap的元素数自增
this->Invalidate();
dcImage.DeleteDC();
}图像保存是通过CImage对象m_imgCurrent.attach(m_hBitmap.at(m_LayCurrent))后,再save的。
可保存结果跟m_imgCurrent.at(0)的结果是一样的