举报

<已解决> 在函数结尾用cleardevice后无法清屏 也贴不上其他图片

1

在我的play函数结尾用cleardevice函数后画面就卡住了,也贴不上其他图片覆盖

若是关闭play函数中的窗口 新写一个gameover函数重新开一个绘图窗口 在新的窗口里贴图就是一片黑 不运行play函数直接调用gameover函数图片就能正常贴上

怀疑是play函数里出了问题 但又不清楚具体原因 有考虑过会不会是链表没有清除的问题 但是周围人没有清除链表也没有出现这样的状况

play函数如下

void play(USER* user) {
	initgraph(1050, 500, SHOWCONSOLE);
	while (1) {
		cleardevice();
		BeginBatchDraw();//批量绘图
		stargame(user, topScore, t);//贴背景显示用户信息及倒计时
		if(...){	//这里我省略了条件
		break;
		}
	FlushBatchDraw();
	}

	cleardevice();
	loadimage(&img_over, _T(".\\pm\\WinLayerBg.jpg"), 640, 480);
	putimage(0, 0, &img_over);

	_getch();
	closegraph();

}

请问是什么原因导致的? 该如何解决?

其实就是我用了FlushBatchDraw后面没有用EndBatchDraw 导致后面贴不上图

不过这次也知道了没有结束批量绘图操作也会影响后续新开窗口的贴图

举报
0

你的代码实在看起来太累。

我粗略看了下,你是在 closegraph 之后调用了 cleardevice,肯定不行啊,绘图窗口都关闭了,当然不能清屏。

ava
慢羊羊

2020-6-6

不好意思,因为不知道具体是哪里出了问题我只好一起贴上来了 play函数逻辑大概是进入一个while循环 循环里一些图坐标改变一个值 这样就能让图一直动起来 在循环里如有两个图坐标重叠 就删去其中一个 剩下的就是倒计时什么的 图的操作涉及链表 cleardevice那里我注释掉了的 这里是我closegraph后直接跳到gameover函数里 注释里那一部分是之前我试的另一个版本 就是先清屏后贴图最后再closegraph 但是画面会卡住也没有被新贴的图覆盖 就算不用cleardevice直接贴图也贴不上 我想知道有没有什么原因会导致贴图失效 并且还会影响新开绘图窗口的贴图 (但我感觉我好像是第一个遇到这种问题的。。。) -  Lampetra japonicum  2020-6-6
举报
举报
0

就是说如果使用BeginBatchDraw()

但后面没有使用EndBatchDraw()直接cleardevice()是会卡住的,后面使用closegraph然后再initgraph是贴不了图的(一片黑)

已解决,谢谢楼主

记得BeginBatchDraw一定要有对应的EndbatchDraw执行了才可以刷新出你的图形框,否则就会更新不了图形框

技术讨论社区
相关提问