客户区中间绘制20个嵌套正方形,以步长dx,dy移动,进行碰撞检测,如果最大的正方形触到某个边界,就反方向运动,直接绘制和用双缓冲区实现,并观察不同
全局变量:
int x0=200,x1=500;
int y0=200,y1=500;
int x2=200,x3=500;
int y2=800,y3=800;
int xMax=0; //最大矩形x坐标
int flag=1; //0:左,1:右
void CHomeWork3View::OnDraw(CDC* pDC)
{
CHomeWork3Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
CPoint ptCenter;
CRect rect;
GetClientRect(&rect); //获得窗口客户区的大小
ptCenter = rect.CenterPoint(); //获得矩形的中心点,目的是为了确定后面同心圆图像的圆心
CDC menDC; // 声明内存DC
CBitmap NewBitmapmp; // 创建内存中存放临时图像的位图对象bmp
menDC.CreateCompatibleDC(pDC); // 依附窗口DC(窗口对象为pDC),创建兼容内存DC(就是创建一个内存DC,所有图形先画在这上面)
NewBitmapmp.CreateCompatibleBitmap(&menDC, rect.Width(), rect.Height());// 在兼容内存DC上,创建兼容位图
menDC.SelectObject(&NewBitmap