StretchBlt有时显示不出图片的玄学问题

0

如下是一个用于图片缩放的demo,奇怪的是图片有时能显示有时不能显示,函数返回值均没有问题,求解

#include <graphics.h>
#include<windows.h>
#include <conio.h>
int main(){
	initgraph(640, 480);
	IMAGE img;
	loadimage(&img, "1.png");
	HDC easyx_win = GetImageHDC();			// 是 easyx 绘图窗口
	HDC img_hdc = GetImageHDC(&img);		// img 是自己加载的图片
	SetStretchBltMode(easyx_win, STRETCH_HALFTONE);
	StretchBlt(easyx_win, 0, 0, 300, 440, img_hdc, 0, 0, 1200, 1758, SRCCOPY);//这里炸了
	FlushBatchDraw();
	putimage(300, 0, &img);
	_getch();
	closegraph();
	return 0;
}
ava
无名氏

2020-3-22

0

你的代码我测试过了,没发现不能加载的问题。我的测试环境:

1. EasyX_20200315(beta),win10 + vs2019,执行了 10 次,每次都能显示出图片来。

2. EasyX_20200315(beta),win10 + vc6,执行了 10 次,每次都能显示出图片来。

ava
慢羊羊

2020-3-22

@慢羊羊 最新的,20200315 - 无名氏 2020-3-25
那我就真的找不到原因了,把StretchBlt的第一个参数设为另一IMAGE的HDC,然后再putimage就完全没有问题,不过还是谢谢你的帮助 - 无名氏 2020-3-23
@无名氏 你用的哪个版本的 EasyX 呢?新版本的 EasyX 不需要执行 FlushBatchDraw(),或许新版本也没有你的这个问题呢。 - 慢羊羊 2020-3-23
@无名氏 你装了 360 或别的什么可能影响程序执行的杀毒类软件了吗? - 慢羊羊 2020-3-25