关于loadimage函数的问题 求大佬解答!

0

用的是EasyX_20200902版本,使用loadimage函数加载图片时,窗口其他地方会变成黑色,代码中把窗口设置为白色,加载了两张图片,运行结果只显示第二张图片,其他地方都是黑色。不知道是哪里的问题。

#include <iostream>
#include <easyx.h>
#include <graphics.h>
#include "mmsystem.h"
#pragma comment(lib,"Winmm.lib")
#include <stdio.h>
#include <windows.h>
using namespace std;

int main()
{
	initgraph(1120, 780);	//初始化绘画窗口
	setbkcolor(WHITE);		//背景颜色
	cleardevice();
	BeginBatchDraw();		//批量绘图 暂不输出
	setorigin(890, 650);
	loadimage(NULL, _T("white.png"), 60, 60);
	setorigin(10, 10);
	loadimage(NULL, _T("top.png"), 60, 60);
	EndBatchDraw();
	Sleep(10000);
}
ava

2021-8-28

1

在批量绘图模式下,任何绘图操作都将暂时不输出到绘图窗口上,直到执行 FlushBatchDraw() 或 EndBatchDraw() 才将之前的绘图输出。

而且loadimage是载入图片,不是绘制图片

绘制图片可以用putimage或者其他绘图函数来实现

如下代码可以大概实现两张图片的切换

//绘制第一张图片
...
FlushBatchDraw();
Sleep(1000);
//绘制第二张图片
...
FlushBatchDraw();
ava

2021-8-29

1

你的代码需要FlushBatchDraw, 关于FlushBatchDraw函数的说明在 https://docs.easyx.cn/en-us/flushbatchdraw 中有详细说明, 

你的代码修改后如下

#include <iostream>
#include <stdio.h>

#include <graphics.h>

#include <windows.h>
#pragma comment(lib,"Winmm.lib")

using namespace std;

int main()
{
	initgraph(1120, 780); //初始化绘画窗口
	setbkcolor(WHITE); //背景颜色

	cleardevice();

	BeginBatchDraw(); //批量绘图 暂不输出

	setorigin(890, 650);
	loadimage(NULL, _T("white.png"), 60, 60);

	setorigin(10, 10);
	loadimage(NULL, _T("top.png"), 60, 60);

	FlushBatchDraw();
	EndBatchDraw();

	_getch();
	
	return 0;
}

顺带一提 : 代码格式很重要, 请注意你的代码格式, 没有必要的重复头文件删去, Sleep用_getch代替, 不要写出来#include "mmsystem.h"这种..

ava
Margoo

2021-8-28

技术讨论社区