MFC双缓存

// TODO: 在此处为本机数据添加绘制代码
CDC MemDC;//显示设备对象
CBitmap MemBitmap;//位图对象
//获取客户区高度和宽度
CRect clientRect;
GetClientRect(&clientRect);
nWidth = clientRect.right - clientRect.left;
nHeight = clientRect.bottom - clientRect.top;

//建立与屏幕显示兼容的内存显示设备
MemDC.CreateCompatibleDC(NULL);
//建立与屏幕显示兼容的位图
MemBitmap.CreateCompatibleBitmap(pDC,nWidth,nHeight);

//将位图选入内存设备
CBitmap *pOldBit = MemDC.SelectObject(&MemBitmap);

//用背景色将位图清楚干净
//MemDC.FillSolidRect(0,0,nWidth,nHeight,RGB(0,0,255));

//在内存中绘图


CBrush NewBrush(RGB(100, 100, 100)), NewBrush1(RGB(34,139,34));

MemDC.Rectangle(0,0,nWidth,nHeight);
//打印游戏区域
CBrush *pOldBrush;
pOldBrush = MemDC.SelectObject(&NewBrush1);
MemDC.Rectangle(rect);
NewBrush1.DeleteObject();

//打印蛇
pOldBrush = MemDC.SelectObject(&NewBrush);
for (Snake* p = pHead; p != NULL; p = p->next)
{
	MemDC.Rectangle(p->x, p->y, p->x + width, p->y + width);
}
//打印食物
if (IsNew == 1)
	MemDC.Rectangle(food.x, food.y, food.x + width, food.y + width);
NewBrush.DeleteObject();


//打印分数
CString str;
str.Format(_T("分数为%d"), score);
MemDC.TextOutW(rect.right + 30, cWidth / 2,str);
//更改状态
IsChange = 1;


//将内存中的图拷贝到屏幕上进行显示
pDC->BitBlt(0, 0, nWidth, nHeight, &MemDC, 0, 0, SRCCOPY);
// 绘图完成后的清理
MemBitmap.DeleteObject();
MemDC.DeleteDC();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值