//设备环境
CDC *pDC=GetDC();
HBITMAP hBitmap=(HBITMAP)LoadImag(NULL,"1.bmp",IMAGE_BITMAP,0,0,
LR_LOADFROMFILE); //二进制位存贮位图,也就是一个句柄. m_bitmap.Attach(hBitmap); // CBitmap m_bitmap; 得到hBitmap 指向的位图.
BITMAP bm; //定义一个BITMAP结构
m_bitmap.GetBitmap(&bm); //得到BITMAP结构信息
//内存环境
CDC dcImage;
if(!dcImage.CreateCompatibleDC(pDC)) //判断内存环境是否与设备环境一致。
return;
CBitmap* pOldBitmap=dcImage.SelectObject(&m_bitmap);
//pOldBitmap指向内存环境中的位图
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY); //画图 内存环境释放位图!!
dcImage.SelectObject(pOldBitmap); //再次得到该位图。
DeleteObject(m_bitmap.Detach()); //安全释放该位图。????:其中的解释对么,尤其是最后几句,瞎蒙的,还请指教!谢谢!
CDC *pDC=GetDC();
HBITMAP hBitmap=(HBITMAP)LoadImag(NULL,"1.bmp",IMAGE_BITMAP,0,0,
LR_LOADFROMFILE); //二进制位存贮位图,也就是一个句柄. m_bitmap.Attach(hBitmap); // CBitmap m_bitmap; 得到hBitmap 指向的位图.
BITMAP bm; //定义一个BITMAP结构
m_bitmap.GetBitmap(&bm); //得到BITMAP结构信息
//内存环境
CDC dcImage;
if(!dcImage.CreateCompatibleDC(pDC)) //判断内存环境是否与设备环境一致。
return;
CBitmap* pOldBitmap=dcImage.SelectObject(&m_bitmap);
//pOldBitmap指向内存环境中的位图
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY); //画图 内存环境释放位图!!
dcImage.SelectObject(pOldBitmap); //再次得到该位图。
DeleteObject(m_bitmap.Detach()); //安全释放该位图。????:其中的解释对么,尤其是最后几句,瞎蒙的,还请指教!谢谢!
CDC *pDC=GetDC();
HBITMAP hBitmap=(HBITMAP)LoadImag(NULL,"1.bmp",IMAGE_BITMAP,0,0,
LR_LOADFROMFILE); //位图句柄。 m_bitmap.Attach(hBitmap); // CBitmap m_bitmap; 将位图句柄绑定到位图对象中。
BITMAP bm; //定义一个BITMAP结构
m_bitmap.GetBitmap(&bm); //得到位图的BITMAP结构信息
//内存设备环境
CDC dcImage;
if(!dcImage.CreateCompatibleDC(pDC)) //创建内存设备环境
return;
CBitmap* pOldBitmap=dcImage.SelectObject(&m_bitmap);
//将位图对象选入内存设备环境,pOldBitmap指向内存设备环境中原来的位图
pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&dcImage,0,0,SRCCOPY); //画图,也即将内存设备环境中的位图拷贝到实际的设备环境中。
dcImage.SelectObject(pOldBitmap); //将原先的位图对象选入内存设备环境,目的是将选入的位图对象m_bitmap选出,以便释放。
DeleteObject(m_bitmap.Detach()); //安全释放该位图。应使用:m_bitmap.DeleteObject();
dcImage.DeleteDC(); //还应释放内存设备环境。