请问该怎么清空IMAGE对象然后载入下一张

0
int main()
{
	IMAGE x;
	initgraph(1024,1024);

	loadimage(&x,"F:\\示例1.png");
	putimage(200,0,&x);

	cleardevice();

	x = NULL;

	loadimage(&x,"F:\\示例2.png");
	putimage(-300,0,&x);
	system("pause");
	closegraph();
	return 0;
}

环境:vs2010,多字节字符集

想要在第一次loadimage,putimage后清空IMAGE x 对象,然后loadimage一张新的图片。

尝试直接赋值NULL失败,示例1图片总是会叠在示例2图片的底部,该如何正确的清空IMAGE对象然后load下一张呢?

ava
④‹

2020-7-11

0

IMAGE 对象可以反复使用,不需要清空,可以直接加载第二张图片。

你的测试代码坐标貌似有问题,我不确定你为什么要这么写。

以下代码给你做个参考:

#include <graphics.h> 
#include <conio.h>

int main()
{
	IMAGE x;
	initgraph(600, 400);

	loadimage(&x,"F:\\1.png");
	putimage(0, 0, &x);

	loadimage(&x, "F:\\2.png");
	putimage(100, 0, &x);

	_getch();

	closegraph();
	return 0;
}
ava
慢羊羊

2020-7-12

已经解决了,我使用的是带alpha通道的png,直接load下一张会把1.png叠在2.png的下面一起显示。我的解决方法是load实际上的第二张之前先load一个空的mask.png,同时改变对象大小为1*1像素,等于把1.png和mask.png缩小到了一个点,再load下一张,同时改回原大小,这样叠在下面的就只有一个透明的点,不影响图片了。叠图的原因可能是内存或者显存上的问题,这我就不清楚了。 -  ④‹  2020-7-13
@④‹ 你试一下最新版本的 EasyX 看还有没有这个问题,应该是可以直接 loadimage 新图片的。 -  慢羊羊  2020-7-18
技术讨论社区