如何使用Memory DC

来源:互联网 发布:流程图软件visio2010 编辑:程序博客网 时间:2024/06/05 22:45

CRect rcWin;

GetWindowRect(&rcWin);


CDC dc;

HDC hdc = GetWindowDC(m_hWnd);

dc.Attach(hdc);


CDC memDC;

memDC.CreateCompatible(&dc);  //创建一个与指定设备兼容的内存设备上下文环境


//下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小,也可以自己定义(如:有滚动条时就要大于当前窗//口的大小,在BitBlt时决定拷贝内存的哪部分到屏幕上

CBitmap bmp;

bmp.CreateCompatibleBitmap(%dc,rcWin.Width(),rcWin.Height());

memDC.SelectObject(&bmp);

memDC.SetBkMode(TRANSPARENT);


//利用Gdiplus  在memory DC上重绘

Gdiplus::Graphics graphics(MemDC.GetSafeHdc());

graphics.DrawImage(m_pBkImage,rcWin,0,0,m_nFrameWidth,m_nFrameWidth,UnitPixel);


//在memory dc重绘完成后 拷贝回源dc

dc.BitBlt(0,0,rcWindow.Width(),rcWindow.Height(),&MemDC,0,0,SRCCOPY);

dc.SelectClipRgn(NULL);//清除

dc.Detach();

ReleaseDC(m_hWnd,hdc);





原创粉丝点击