MFC 双缓冲,该如何处理
MFC 双缓冲
在onPaint里调用DrawBK函数,未能正确显示图片,谢谢
------解决方案--------------------
都说没有画布了
在onPaint里调用DrawBK函数,未能正确显示图片,谢谢
- C/C++ code
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); }
------解决方案--------------------
都说没有画布了
- C/C++ code
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); }