15,978
社区成员
发帖
与我相关
我的任务
分享
CDC * pDC;
CDC *MDC;
CDC *MDCScreen;
pDC=GetDlgItem(IDC_STATIC_S)->GetDC(); //IDC_STATIC_S为要显示图片的图片控件
MDC->CreateCompatibleDC(pDC);
MDCScreen->CreateCompatibleDC(pDC);
HBITMAP hbmpdraw=CreateCompatibleBitmap(MDC->GetSafeHdc(),width,height);
HBITMAP hbmpold=(HBITMAP)MDC->SelectObject(hbmpdraw);//将位图调入内存设备
//2
HBITMAP hbmpdrawScreen=CreateCompatibleBitmap(MDCScreen->GetSafeHdc(),width,height);
HBITMAP hbmpoldScreen=(HBITMAP)MDCScreen->SelectObject(hbmpdrawScreen);//将位图调入内存设备
static int Sx=0;
static int Sy=0;
Sx+=2;
Sy+=2;
MDC->SelectObject(bitmap); // CBitmap bitmap; //:LoadImage得到显示位图,并装入MDC
pDC->BitBlt(Sx,Sy,width,height,MDCScreen,0,0,SRCCOPY);
以上都可以正常显示,但就是图片移动过后会有痕迹,所以采用双缓冲,多创建一个兼容DC:MDCScreen
然后做如下处理:
MDCScreen->BitBlt(PRect.left,PRect.top,width,height,MDCScreen,0,0,WHITENESS);
MDCScreen->BitBlt(Sx,Sy,width,height,MDC,0,0,SRCCOPY);//将移动过的图片放到MDCScreen环境上
pDC->BitBlt(0,0,width,height,MDCScreen,0,0,SRCCOPY);