BeginBatchDraw和EndBatchDraw都是easyx中的两个函数,返回值均为void
当我们需要绘制连续的动画时,一直刷新屏幕会产生闪屏,我们可以用他们来解决这个问题。
void BeginBatchDraw(); // 开始批量绘制
void EndBatchDraw(int left, int top, int right, int bottom); // 结束批量绘制,并执行指定区域内未完成的绘制任务
本质上就是一个封装的双缓存:双缓存讲解
- 运行BeginBatchDraw后,所有的绘图都不再显示在屏幕上,而是在内存中进行
- 直到碰到EndBatchDraw,之前所有在内存中绘图的成品将一并展示在屏幕中
实例
setbackground(&background);
while (1)
{
BeginBatchDraw();
setbackground(&background); //画图
setgold(&wy1, &wy2, xx, yy); //画图
xx += 200;
yy += 200;
Sleep(1000);
EndBatchDraw();
}
在while外我们先绘制了一面背景,之后我们遇到了BeginBatchDraw,那么我们的一下操作都不会显示在屏幕上
setbackground(&background); //画图
setgold(&wy1, &wy2, xx, yy); //画图
xx += 200;
yy += 200;
Sleep(1000);
直到遇到EndBatchDraw,我们之前那些操作才会一并显示出来。
因为我们使用他们往往是需要动态的画面,所以我们常常在BeginBatchDraw后就直接清屏cleardevice或直接用背景来覆盖之前的图