void MyPaint(HDC hdc) { SelectObject(bufdc, bg); BitBlt(mdc, 0, 0, 640, 480, bufdc, 0, 0, SRCCOPY); //重贴背景,没有残影 // 生成5-10之间的随机数 SelectObject(bufdc, res[index[1]]); static int j=0; MyTransparentBlt(mdc, x[1] , y[1], 100, 100, bufdc, 0, j, 100, 100, RGB(255, 0, 255)); SelectObject(bufdc, res[index[2]]); MyTransparentBlt(mdc, x[2] , y[2], 100, 100, bufdc, 0, j, 100, 100, RGB(255, 0, 255)); SelectObject(bufdc, res[index[0]]); MyTransparentBlt(mdc, x[0] , y[0], 100, 100, bufdc, 0, j, 100, 100, RGB(255, 0, 255)); j = j + 100; if (j >= 1500) j = 0; BitBlt(hdc,0,0,640,480,mdc,0,0,SRCCOPY); for(int i=0;i<3;i++){ if(y[i]>250&&flag[i]==0) { x[i] += vx; //计算X轴方向贴图坐标,每调用一次MyPiant(),x坐标就加上一个恒定不变的vx,相当于匀速运动 vy = vy -gy+1; //计算Y轴方向速度分量,vy随着每一次MyPiant()函数的调用就加上一个gy(重力加速度) y[i] += vy; } else{ flag[i]=1; x[i] += vx; //计算X轴方向贴图坐标,每调用一次MyPiant(),x坐标就加上一个恒定不变的vx,相当于匀速运动 vy = vy +gm-1; //计算Y轴方向速度分量,vy随着每一次MyPiant()函数的调用就加上一个gy(重力加速度) y[i] += vy; } if(y[i]>400&&flag[i]==1){ srand(time(NULL)); vx=rand()%3-3; vy=0; gy=rand()%3+2; gm=rand()%4+3; for(int m=0;m<3;m++){ x[m]=rand()%210+230; y[m]=rand()%20+250; index[i]=rand()%8; } flag[i]=0; } } //计算Y轴方向贴图坐标,每调用一次MyPiant(),y坐标就加上一个刚改变过后的vy,相当于加速运动 tPre = GetTickCount(); //记录上次的绘图时间 }
时间: 2024-04-27 22:19:23 浏览: 98
MyPaint_new.rar_GDI 矩形_MyPaint_paint_移动 直线
这是一个使用C++语言编写的绘图函数,主要功能是绘制一个动态的图像,并且实现了重力加速度、碰撞反弹、随机位置和图片等功能。函数首先选择一个背景图像,然后根据一些参数和数学公式计算出三个物体在屏幕上的位置和速度,并将它们绘制在内存缓冲区中。最后,将内存缓冲区的内容复制到屏幕上,完成图像的绘制。具体细节和实现方法可以结合上下文和代码注释进行理解和分析。
阅读全文