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或直接用背景来覆盖之前的图