如何使用Memory DC

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);





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值