基本情况介绍:
开发语言为C语言,开发平台visual studio 2022,使用easyx实现图形化界面,easyx版本为26.1.1。
现将1张24位位图放入资源中(通过画图已将图片转为24位位图,通过Resource Hacker看编译后的exe能看到这张图)。在程序实现时,图片资源使用easyx的IMAGE对象,图片从资源载入使用easyx的loadimage()函数。在程序启动时,用初始化函数将资源中的这张图片读入内存(写入IMAGE对象),然后用putimage()显示。
问题:
1 看帮助关于loadimage()函数的介绍,从资源载入的参数可选项说得不是很清楚,按例子去测试也不能得到正确结果。
2 使用loadimage()函数,返回值是2或5007,但无法在屏幕显示正确的图片。
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include <conio.h>
#include "resource.h"
/**
* 初始化函数 - 将资源中的图片读入内存并显示到屏幕上
* 该函数负责从资源中加载BMP图片到IMAGE对象,
*/
void InitializeAndSaveImage()
{
// 创建IMAGE对象用于存储图片数据
IMAGE img;
//IDB_BITMAP1是资源中位图的ID
int isload = loadimage(&img, RT_BITMAP, MAKEINTRESOURCE(IDB_BITMAP1)); //函数编译通过,返回2
//int isload = loadimage(&img, _T("BITMAP"), MAKEINTRESOURCE(IDB_BITMAP1)); //函数编译通过,返回5007
putimage(300, 400, &img); // 在另一个位置显示,但黑屏无法显示资源中的图片
}
/**
* 主函数 - 程序入口点
* 初始化图形界面,调用初始化函数处理图片资源
*/
int main()
{
// 初始化图形窗口,设置窗口大小
initgraph(800, 600);
// 设置控制台输出编码为UTF-8以便正确显示中文
system("chcp 65001");
// 输出程序开始执行的信息
printf("程序开始执行...\n");
// 调用初始化函数处理图片资源
InitializeAndSaveImage();
// 显示提示信息
printf("按任意键退出程序...\n");
// 等待用户按键
_getch();
// 关闭图形窗口
closegraph();
return 0;
}




