怎么在缓冲模式下先暂停5秒后再大矩形里再显示另一个矩形?
问题:在 EASYX 的无限循环清屏缓冲区模式下,无法达到暂缓的功能。
目标:在 EASYX 的无限循环清屏缓冲区模式下,达到成功在一个大矩形区里先暂停 5 秒后显示里头的另一个小红矩形
问题示例代码:
#include<graphics.h>
// 合成初始化,初始程序位置,大小,参数,背景及标题名称,窗口圆角度。
void iniwindows(int x, int y, int w, int h, int flag, COLORREF RGB, LPCTSTR str, int xr, int yr)
{
// 初始化绘图库
initgraph(w, h, flag);
setbkcolor(RGB);
// 刷新背景
cleardevice();
// 获得窗口句柄
HWND hWnd = GetHWnd();
// 初始程序位置
MoveWindow(hWnd, x, y, w, h, true);
// 设置圆角
HRGN rgn = CreateRoundRectRgn(10, 8, w - 10, h - 10, xr, yr);
SetWindowRgn(hWnd, rgn, true);
// 使用 Windows API 修改窗口名称
SetWindowText(hWnd, str);
setlinecolor(BLACK);
}
int main()
{
// 合成初始化,初始程序位置,大小,参数,背景及标题名称,窗口圆角度。
iniwindows(400, 400, 500, 600, NULL, WHITE, _T("怎么在缓冲模式下先暂停5秒后再大矩形里再显示另一个矩形?"), 20, 20);
// 缓冲区
BeginBatchDraw();
while(1)
{
// 循环清屏
cleardevice();
// 大矩形
rectangle(100, 100, 200, 200);
// 先暂停五秒再显示下个的小红矩形,可以在这里没有用
Sleep(5000);
// 大矩形里的小红矩形
setlinecolor(RED);
rectangle(100+10, 100+10, 200-10, 200-10);
// 缓冲区
FlushBatchDraw();
}
EndBatchDraw();
getmessage(EX_CHAR);
return 0;
}
我要的效果代码:
#include<graphics.h>
// 合成初始化,初始程序位置,大小,参数,背景及标题名称,窗口圆角度。
void iniwindows(int x, int y, int w, int h, int flag, COLORREF RGB, LPCTSTR str, int xr, int yr)
{
// 初始化绘图库
initgraph(w, h, flag);
setbkcolor(RGB);
// 刷新背景
cleardevice();
// 获得窗口句柄
HWND hWnd = GetHWnd();
// 初始程序位置
MoveWindow(hWnd, x, y, w, h, true);
// 设置圆角
HRGN rgn = CreateRoundRectRgn(10, 8, w - 10, h - 10, xr, yr);
SetWindowRgn(hWnd, rgn, true);
// 使用 Windows API 修改窗口名称
SetWindowText(hWnd, str);
setlinecolor(BLACK);
}
int main()
{
// 合成初始化,初始程序位置,大小,参数,背景及标题名称,窗口圆角度。
iniwindows(400, 400, 500, 600, NULL, WHITE, _T("怎么在缓冲模式下先暂停5秒后再大矩形里再显示另一个矩形?"), 20, 20);
// 缓冲区
while(1)
{
// 循环清屏
cleardevice();
// 大矩形
rectangle(100, 100, 200, 200);
// 先暂停五秒再显示下个的小红矩形,可以在这里没有用
Sleep(200);
// 大矩形里的小红矩形
setlinecolor(RED);
rectangle(100+10, 100+10, 200-10, 200-10);
// 缓冲区
Sleep(180);
}
getmessage(EX_CHAR);
return 0;
}