16,472
社区成员
发帖
与我相关
我的任务
分享
void CTetrisView::DrawImage2(CBin *bin, unsigned char **image, CDC *pDC)
{
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]]));
}
}
}
////////////////////////////////////
}
这样的话 每次都是全部画上的。。。