- void xxxDlg::ShowBitmap()
- {
- CDC memDC;
- CBitmap bmpShow;
- BITMAP bmpInfo;
- CDC* pCurDC = GetDC();//得到当前DC
- memDC.CreateCompatibleDC(pCurDC);//创建兼容的内存DC
- bmpShow.LoadBitmap(bmpResID);//bmpResID为位图资源ID号
- bmpShow.GetBitmap(&bmpInfo);
- CBitmap* pOldbmp = memDC.SelectObject(&bmpShow);//将位图选入到内存DC中
- //此处可以用memDC进行图像绘制,处理等
- pCurDC->StretchBlt(0,0,width,height,&memDC,0,0,bmpInfo.bmWidth,bmpInfo.bmHeight,SRCCOPY);
- //copy内存DC到屏幕上显示 ,width,height为分别为显示的宽度和高度
- memDC.SelectObject(pOldbmp);//恢复旧对象
- ReleaseDC(pCurDC);//释放DC
- }
双缓冲就是前台缓冲(显示用)和后台缓冲(内存中),在后台中进行处理计算,处理完后将后台缓冲COPY到前台,可以减少屏幕闪烁,但有延时。
绘图步骤:
1、得到当前窗口DC
2、创建兼容的内存DC
3、将位图选入内存DC,选入后可以作进一步的处理
4、copy内存DC到显示设备
5、清理