bool CDrawingBoardView::OnFileOpen()
{
//TODO: Add your command handler code here
// m_strFileName = name;
CDC dc;
CDC *pDC = GetDC(); //返回屏幕客户区句柄
if(!dc.CreateCompatibleDC(pDC))
return false;
CBitmap b; //封装一个位图,并提供对位图进行操作的成员函数
BITMAP bm; //位图结构体 CString path;
CFileDialog dlg(true,_T("BMP"),_T("*.bmp"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("*.bmp|*.bmp|*.*|*.*|"));
if (dlg.DoModal()==IDOK)
{
path =dlg.GetPathName();
}
else
return false;
HBITMAP hbmp = (HBITMAP)LoadImage(NULL, path, IMAGE_BITMAP,
0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE); //位图句柄
b.Attach(hbmp); //附加位图到位图对象 b.GetBitmap(&bm);
dc.SelectObject(&b); //选入对象至设备
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dc, 0, 0, SRCCOPY);
ReleaseDC(pDC);
pDC=NULL;
return true;
}
{
//TODO: Add your command handler code here
// m_strFileName = name;
CDC dc;
CDC *pDC = GetDC(); //返回屏幕客户区句柄
if(!dc.CreateCompatibleDC(pDC))
return false;
CBitmap b; //封装一个位图,并提供对位图进行操作的成员函数
BITMAP bm; //位图结构体 CString path;
CFileDialog dlg(true,_T("BMP"),_T("*.bmp"),OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("*.bmp|*.bmp|*.*|*.*|"));
if (dlg.DoModal()==IDOK)
{
path =dlg.GetPathName();
}
else
return false;
HBITMAP hbmp = (HBITMAP)LoadImage(NULL, path, IMAGE_BITMAP,
0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE); //位图句柄
b.Attach(hbmp); //附加位图到位图对象 b.GetBitmap(&bm);
dc.SelectObject(&b); //选入对象至设备
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &dc, 0, 0, SRCCOPY);
ReleaseDC(pDC);
pDC=NULL;
return true;
}
=============================
这句什么意思啊?
b.GetBitmap(&bm); CCD memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&b);
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &memDC, 0, 0, SRCCOPY);
ReleaseDC(pDC);
ReleaseDC(memDC);
pDC=NULL;
试试StretchDIBits
CDC *pDC=this->GetDC();
this->m_Bitmap.LoadBitmap(IDB_BITMAP2);
this->m_Bitmap.GetBitmap(&bm);
m_MemDC.CreateCompatibleDC(pDC);
CBitmap * pOldBitmap=m_MemDC.SelectObject(&m_Bitmap);
pDC->BitBlt(point.x,point.y,bm.bmWidth,bm.bmHeight,&m_MemDC,0,0,SRCCOPY);
(point.x,point.y,bm.bmWidth,bm.bmHeight,&m_MemDC,0,0,bm.bmWidth,bm.bmHeight,WHITENESS);
m_MemDC.SelectObject(pOldBitmap);
m_MemDC.DeleteDC();
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&b);
dc.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, 0, 0, SRCCOPY);