在onPaint里调用DrawBK函数,未能正确显示图片,谢谢void DrawBMP(HDC hDstDC, CString strPath)
{
HDC hDC;
HBITMAP hBmp;
HBITMAP hOldBmp;
BITMAP bm;
hDC = CreateCompatibleDC(NULL); hBmp = (HBITMAP)LoadImage(NULL, strPath, IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE | LR_CREATEDIBSECTION); hOldBmp = (HBITMAP)SelectObject(hDC ,hBmp); GetObject(hBmp, sizeof(BITMAP), &bm); BitBlt(hDstDC, 0, 0, bm.bmWidth, bm.bmHeight, hDC, 0, 0,SRCCOPY); SelectObject(hDC ,hOldBmp);
DeleteObject(hDC);
DeleteObject(hBmp);
}void DrawBK(CPaintDC& dc)
{
HDC hMemDC;
HDC hDC;
hMemDC = CreateCompatibleDC(NULL);
DrawBMP(hMemDC, L"D:\\1.BMP"); hDC = dc.GetSafeHdc(); BitBlt(hDC, 0, 0, 1000, 1000, hMemDC, 0, 0, SRCCOPY); DeleteObject(hMemDC);
// dc.BitBlt(330,30,5000,5000,&MemDC,0,0,SRCCOPY);
}
{
HDC hDC;
HBITMAP hBmp;
HBITMAP hOldBmp;
BITMAP bm;
hDC = CreateCompatibleDC(NULL); hBmp = (HBITMAP)LoadImage(NULL, strPath, IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE | LR_CREATEDIBSECTION); hOldBmp = (HBITMAP)SelectObject(hDC ,hBmp); GetObject(hBmp, sizeof(BITMAP), &bm); BitBlt(hDstDC, 0, 0, bm.bmWidth, bm.bmHeight, hDC, 0, 0,SRCCOPY); SelectObject(hDC ,hOldBmp);
DeleteObject(hDC);
DeleteObject(hBmp);
}void DrawBK(CPaintDC& dc)
{
HDC hMemDC;
HDC hDC;
hMemDC = CreateCompatibleDC(NULL);
DrawBMP(hMemDC, L"D:\\1.BMP"); hDC = dc.GetSafeHdc(); BitBlt(hDC, 0, 0, 1000, 1000, hMemDC, 0, 0, SRCCOPY); DeleteObject(hMemDC);
// dc.BitBlt(330,30,5000,5000,&MemDC,0,0,SRCCOPY);
}
void DrawBMP(HDC hDstDC, CString strPath)
hDstDC应该是CPaintDC& dc
函数里:
HDC hDC;
hDC = CreateCompatibleDC(NULL);
这个NULL应该是CPaintDC& dc
试试
这个dc是有值的,CPaintDC dc(this);
DrawBK(dc);
CDialog::OnPaint();
他们的意思是这个NULL应该是dc
void DrawBK(CPaintDC& dc)
{
HDC hDC = dc.GetSafeHdc();
int nWidth = dc.GetDeviceCaps(HORZRES);
int nHeight = dc.GetDeviceCaps(VERTRES);
HDC hMemDC = CreateCompatibleDC(hDC);
HBITMAP hBitmap = CreateCompatibleBitmap(hDC, nWidth, nHeight);
HBITMAP hOldBitamp = (HBITMAP)SelectObject(hMemDC, hBitmap);
DrawBMP(hMemDC, L"D:\\1.BMP"); BitBlt(hDC, 0, 0, nWidth, nHeight, hMemDC, 0, 0, SRCCOPY); SelectObject(hMemDC, hOldBitamp);
DeleteObject(hBitmap);
DeleteDC(hMemDC);
}