你应该在界面只更新移动的那个区域 所以用InvalidRect擦除指定区域不要用Invalidate()擦除整个区域
解决方案 »
- 求救SDI多视图退出时进程还在
- 关于VC++
- 学习visual c++
- GDI+可以实现像AlphaBlend那样的透明画图吗
- 郁闷,公司用代理上网,很多事情都不能做,请教各位大侠!
- 我已定义了资源,但还是报资源不存在.
- CreateThread的线程函数Fun1Proc可以有三个参数吗?
- 如何取到文件的属性的摘要信息里的某个属性值?
- CEdit失去焦点后,ON_EN_KILLFOCUS的处理函数调用了2次。
- 请问我要从一个EXCEL表格里把数据读出到LISTCTRL控件里显示出来,应该怎么做
- mfc的tab control问题!child dialog的按钮以及初始化不管用
- 各位大神们给点思路
{
unsigned int width,i,j;
unsigned int height;
width = bin2->getWidth();//获得宽度
height = bin2->getHeight();//获得高度
int nSize = 20;//砖块大小
////////////// 双缓冲 ///////////
CRect rect;
GetClientRect(&rect);
pDC->FillSolidRect(400,rect.top,rect.bottom,rect.right,RGB(255,255,255));//绘制背景色 pDC->Rectangle(400,0,600,400);
char buf[100];
sprintf(buf,"分数:%d",numLines2*10);
pDC->TextOut(620,20,buf);
pDC->TextOut(620,60,"操作说明:");
pDC->TextOut(670,90,"左移:←");
pDC->TextOut(670,110,"右移:→");
pDC->TextOut(670,130,"下移:↓");
pDC->TextOut(670,150,"旋转:↑");
////////////////////////////////////
CRect rc;
COLORREF BrickColor[8] = {0xFFFFFF, 0xFF0000, 0x00FF00, 0x0000FF,
0x00FFFF, 0xFFFF00, 0x800000, 0x800080};//砖块颜色
//////////////// 2 /////////////////
for (i = 0; i < height; ++i)//一行一行的画砖块
{
for (j = 0; j < width; ++j)
{
rc = CRect(j*nSize+400, i*nSize, (j+1)*nSize+400, (i+1)*nSize);
//绘制面板
if (0 != image[i][j])
{
pDC->FillRect(rc, &CBrush(BrickColor[image[i][j]]));//画临时砖块(运动中)
pDC->Draw3dRect(rc,GetLightColor(BrickColor[image[i][j]]),GetDarkColor(BrickColor[image[i][j]]));
}
}
}
////////////////////////////////////
}这样的话 每次都是全部画上的