举报

关于loadimage()函数不能正确从资源载入图片的问题,easyx版本26.1.1

0

基本情况介绍:

开发语言为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;
}
ava
胡涛

昨天 13:25

技术讨论社区